你可以作出一個觀點,增加一個圓圈CAShapeLayer
:
@IBDesignable class CircleView: UIView {
@IBInspectable public var fillColor: UIColor = #colorLiteral(red: 0, green: 0, blue: 1, alpha: 1) { didSet { shapeLayer.fillColor = fillColor.cgColor } }
@IBInspectable public var strokeColor: UIColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 0) { didSet { shapeLayer.strokeColor = strokeColor.cgColor } }
@IBInspectable public var lineWidth: CGFloat = 0 { didSet { setNeedsLayout() } }
lazy private var shapeLayer: CAShapeLayer = {
let _shapeLayer = CAShapeLayer()
_shapeLayer.fillColor = self.fillColor.cgColor
_shapeLayer.strokeColor = self.strokeColor.cgColor
self.layer.insertSublayer(_shapeLayer, at: 0)
return _shapeLayer
}()
override func layoutSubviews() {
super.layoutSubviews()
let center = CGPoint(x: bounds.midX, y: bounds.midY)
let radius = (min(bounds.size.width, bounds.size.height) - lineWidth)/2
shapeLayer.path = UIBezierPath(arcCenter: center, radius: radius, startAngle: 0, endAngle: .pi * 2, clockwise: true).cgPath
shapeLayer.lineWidth = lineWidth
}
}
N ote,即@IBDesignable
,因此您可以在Interface Builder中使用它。只需創建一個單獨的目標(「文件」 - 「新建」 - 「目標...」)並選擇「Cocoa Touch Framework」並給它一個合適的名稱(例如,如果你的應用程序是「Foo」 「FooKit」)。接着上面的UIView
子類添加到該框架,你可以參考這個類IB(剛加入UIView
對象並改變其基類CircleView
):
來源
2017-02-18 15:24:38
Rob