2017-12-17 17 views
-1

私はちょうど、のUIViewの唯一の左上と右上のためcornerRadiusを設定するために迅速な拡張を書かれている、これは実際に動作する、以下のコード:アニメーションのあるUIViewの左上と右上隅だけのcornerRadiusの設定方法は?

extension UIView { 
func addCorner(roundingCorners: UIRectCorner, cornerSize: CGSize) { 
    let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: roundingCorners, cornerRadii: cornerSize) 
    let cornerLayer = CAShapeLayer() 
    cornerLayer.frame = bounds 
    cornerLayer.path = path.cgPath 
    self.layer.mask = cornerLayer 
    } 
} 

が、私はまたのために、これはアニメーションになりたいです例:あなたのコードの問題は、それがstrokeEnd財産あなたがいないということです

var pathAnimation: CABasicAnimation = CABasicAnimation.animationWithKeyPath("strokeEnd") 
pathAnimation.duration = 1.5 
pathAnimation.fromValue = NSNumber(float: 0.0) 
pathAnimation.toValue = NSNumber(float: 1.0) 
pathAnimation.repeatCount = 10 
pathAnimation.autoreverses = true 
myShapeLayer.addAnimation(pathAnimation, forKey: "strokeEnd") 
+0

それはあなたが変更する必要があるが、 '自体をPATH'' strokeEnd'ではありません。矩形のパスと丸い角のパスを交互にする必要があります。 – matt

+0

また、iOS 11では 'cornerRadius'が直接アニメーション化可能で、レイヤーに' maskedCorners'プロパティがあることに気づいていますか?これは基本的に1ライナーです。 – matt

答えて

1

:0から50の値は、誰も私を助けることができるコーナーでは?、私は以下の作品、コードをアニメーションコードを追加しようではなく、アニメーション化する必要がありますが、プロパティー自体はpathです。矩形と丸い角の四角形の間のパスを交互に切り替え、その交互にアニメートする必要があります。

:iOSの11にあなたが...

self.v.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] 

を丸めるためにあなたのコーナーを選択することができますので、これは、事実上ワンライナーで...と角の丸みがビューアニメートそのものであるため、という

注意

UIView.animate(withDuration: 1, animations: { 
    self.v.layer.cornerRadius = 20 
}) 

それでは、アニメーションを微調整して、自分のやり方を見てみましょう。

enter image description here

+0

ありがとうございますが、ios11だけでなく、ios8からios11のアニメーションでコーナーの半径を設定するにはどうすればいいですか? – HelloWorld

+0

私の最初の段落で述べたように。 – matt

+0

'strokeEnd'を 'path'に変更しましたが、動作しません!、助けてください – HelloWorld

関連する問題