【发布时间】:2018-05-16 07:44:30
【问题描述】:
我使用 UIBezierPath 和 CAShapeLayer 以及以下代码创建了圆形进度视图。
let center = self.center
let trackLayer = CAShapeLayer()
let circularPath = UIBezierPath(arcCenter: center, radius: 100, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)
trackLayer.path = circularPath.cgPath
trackLayer.strokeColor = UIColor.lightGray.cgColor
trackLayer.lineWidth = 10
trackLayer.fillColor = UIColor.clear.cgColor
trackLayer.lineCap = kCALineCapRound
self.layer.addSublayer(trackLayer)
shapeLayer.path = circularPath.cgPath
shapeLayer.strokeColor = UIColor.red.cgColor
shapeLayer.lineWidth = 10
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.lineCap = kCALineCapRound
shapeLayer.strokeEnd = 0
self.layer.addSublayer(shapeLayer)
self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap)))
如果我将该代码放在我的 viewDidLoad 中,它可以正常工作。但是,当我从情节提要添加 UIView 并将其类设置为自定义类然后将所有代码复制到该自定义 UIView 类并在 awakeFromNib 函数中调用它时,它不起作用可能是什么原因?以及如何将上述代码与自定义 UIView 类一起使用?
橙色视图应该是我的自定义视图,我添加了前导、尾随、底部和固定高度约束,但它看起来像上面。圆形视图不需要放置橙色视图的中心吗?
【问题讨论】:
标签: ios swift uiview uibezierpath cashapelayer