带有CAShapeLayer作为蒙版的滞后UIView动画

时间:2018-08-04 10:29:34

标签: ios swift uiviewanimation cashapelayer ios-animations

因此,我有一个UIView,它有一个CAShapeLayer作为遮罩,我用它来设置仅左下角和右下角的角半径。我的视图必须将其Y位置从上到下更改,为此,我使用了简单的UIView.animate(withDuration:)。首先,我将UIView的蒙版设置为:

   myView?.frame = CGRect(x: 0, y: -(viewH), width: self.view.frame.width, height: viewH)
   let rectShape = CAShapeLayer()
   rectShape.bounds = (myView?.frame)!
   rectShape.position = (myView?.center)!
   rectShape.path = UIBezierPath(roundedRect: (myView?.bounds)!, byRoundingCorners: [.bottomLeft , .bottomRight], cornerRadii: CGSize(width: 20, height: 20)).cgPath
   myView?.layer.mask = rectShape

然后以滑动手势:

   UIView.animate(withDuration: 0.4) {
        self.myView?.frame.origin = CGPoint.zero
    }

我在iPhone 5s上运行代码,一切正常。但是,当我在iPhone 6 plus上运行它时,Y位置更改动画比较滞后。我在UITableView上有myView,其滚动动画也很慢。

问题 有谁知道如何用UIViewCAShapeLayer制作动画{}?

PS 。我的应用程序的目标iOS版本是10.0。我知道对于iOS 11,还有另一种方法可以只为底角设置圆角半径,但是我需要适用于两种iOS版本的解决方案。

0 个答案:

没有答案