【发布时间】:2023-07-13 01:31:01
【问题描述】:
我有一个UIButton,里面有一个CAShapeLayer。这是子类代码的一部分:
private func addBeneathFill(){
didAddedBeneathFill = true
let halfBeneathFill = UIBezierPath()
halfBeneathFill.move(to: CGPoint(x: 0, y: frame.height / 2))
halfBeneathFill.addCurve(to: CGPoint(x: frame.width, y: frame.height / 2), controlPoint1: CGPoint(x: frame.width / 10, y: frame.height / 2 + frame.height / 10), controlPoint2: CGPoint(x: frame.width, y: frame.height / 2 + frame.height / 10))
halfBeneathFill.addLine(to: CGPoint(x: frame.width, y: frame.height))
halfBeneathFill.addLine(to: CGPoint(x: 0, y: frame.height))
halfBeneathFill.addLine(to: CGPoint(x: 0, y: frame.height / 2))
let path = halfBeneathFill.cgPath
let shapeLayer = CAShapeLayer()
shapeLayer.path = path
let fillColor = halfBeneathFillColor.cgColor
shapeLayer.fillColor = fillColor
shapeLayer.opacity = 0.3
layer.insertSublayer(shapeLayer, at: 2)
}
只要UIButton 的大小不变,它就可以很好地工作。当它的大小改变时,CAShapeLayer 只是停留在它的原始位置。当然,当UIButton 的帧发生变化时,我可以再次运行该方法,但在动画中它看起来很糟糕。
如何正确地将CAShapeLayer 的大小设置为UIButton 的当前大小?
【问题讨论】:
标签: swift uibutton cashapelayer