2017-12-17 6 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' 속성을 가지고 있다는 것을 알고 있습니까? 그래서 이것은 기본적으로 하나의 라이너입니다. – matt

답변

1

: 0에서 50의 값이 사람이 나를 도울 수있는 코너는?, 나는 아래 작품, 코드를 애니메이션 코드를 추가 할 수 있지만 애니메이션을 적용해야하지만 속성은 path입니다. 직사각형과 모서리가 둥근 직사각형 사이의 경로를 바꾸고 해당 번갈아에 애니메이션을 적용해야합니다.

당신이 당신의 모서리가 라운드를 선택할 수 있기 때문에 아이폰 OS (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

관련 문제