如何在 draw(_:)中给 UIBezierPath 做动画?

问题描述 投票:0回答:1

我有一个任务要在 draw(_:) 方法,并对其进行高度动画。

var height = 0
override func draw(_ rect: CGRect) {
    let rect = CGRect(x: 0, y: 0, width: 100, height: height)
    let rectanglePath = UIBezierPath(rect: rect)
    UIColor.green.setFill()
    rectanglePath.fill()
}

我想做这样的动画。

func animate() {
    UIView.animate(withDuration: 2) {
        self.height = 300
    }
}

我也可以用 CAShapeLayerCABasicAnimation但我不知道怎么画出来。draw(_:) 方法。使用 draw(_:) 在这个任务中需要使用方法 :(

ios swift uibezierpath caanimation
1个回答
1
投票
class View: UIView{
override func draw(_ rect: CGRect)
{
    let rectanglePath = UIBezierPath(rect: self.frame)
    UIColor.green.setFill()
    rectanglePath.fill()
}}
class ViewController: UIViewController{

override func viewDidLoad()
{
    super.viewDidLoad()
    let subview = View(frame:  CGRect(x: 0, y: 0, width: 100, height: 0))
    self.view.addSubview(subview)

    UIViewPropertyAnimator.runningPropertyAnimator(
       withDuration: 2,
       delay: 0,
       options: .curveLinear,
       animations: {self.view.subviews[0].frame = CGRect(x: 0, y: 0, width: 100, height: 100)}
    )

}}
© www.soinside.com 2019 - 2024. All rights reserved.