2017-03-29 7 views
0

애니메이션을 만들고 싶습니다. 그 모양은 다음과 같습니다. mainViewLayer에 레이어가 있으며 투명 fillColor가있는 물방울이 그려져 있고 다른 레이어에는 CAShapeLayer가 추가됩니다. 파란색 레이어에는 레이어가 있습니다. 같은 범위. 그리고 나는 그것의 y 위치를 움직이기 원한다. 그것은 수위의 감소를 모방 할 것이다.애니메이션의 CALayer 클립 하위보기

fallingWaterLayer = CAShapeLayer() 
    fallingWaterLayer.frame = x.bounds 
    fallingWaterLayer.fillColor = UIColor.blue.cgColor 
    let path = CGPath(rect:fallingWaterLayer.bounds, transform:nil) 
    fallingWaterLayer.path = path 
    x.layer.addSublayer(fallingWaterLayer) 
    mainLayer = DropLayer(x.bounds, shouldFillLayer:false) 
    x.layer.addSublayer(mainLayer!) 

enter image description here

내 애니메이션은 다음과 같습니다

let animation = CABasicAnimation(keyPath: "bounds.origin.y") 
    animation.toValue = x.bounds.size.width * -1 
    animation.duration = 5.8 
    animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) 
    animation.fillMode = kCAFillModeBoth 
    animation.isRemovedOnCompletion = false 
    fallingWaterLayer.add(animation, forKey: animation.keyPath) 

그래서 질문은 내가, 탑 레이어 클립을 파란색 RECT를 만들 수있는 내부에서 수행되는이 애니메이션처럼 보이게하는 방법입니다 물방울?

답변

1

모든 CALayer은 임의의 다른 레이어 일 수있는 mask 속성을 가지고 있으므로 좋은 해결책이 될 것 같습니다.

https://developer.apple.com/reference/quartzcore/calayer/1410861-mask

마스크 재산권 작동하는 방법은 마스크의 투명한 화소가 목표 층에 클립되도록된다. 따라서 마스크로 사용할 두 번째 단단한 물방울 층을 만들어야합니다. 동일한 물방울 윤곽선을 다시 사용할 수 없습니다. 그렇지 않으면 물이 물방울의 경계선으로 잘립니다. 내부를 채우는 것.

+0

감사합니다. 지금 사용해 보겠습니다. – Melany

+0

멋진 작품 !!!!! 고맙습니다. – Melany