比如说A是一个imageView,B仅仅是一个普通的透明的view,我希望A被B盖住的部分是彩色的,而没有盖住的部分是黑白的,请问有什么实现的思路吗
黄舟2017-04-18 09:48:29
은 A의 layer.mask
구현을 제어할 수 있습니다. 마스크는 A와 B의 겹치는 영역입니다. rect
의 채우기 layer.mask
는 겹치는 영역의 path
를 계산하여 변경할 수 있습니다. 마스크를 사용하면 많은 마스킹 효과를 얻을 수 있습니다.
참고하실 수 있도록 코드를 작성했습니다. 놀이터에서 직접 효과를 확인하실 수 있습니다:
으아아아정상적으로 실행되면 플레이그라운드의 Assistant Editor에서 다음과 같은 효과를 볼 수 있습니다:
大家讲道理2017-04-18 09:48:29
1. AB의 교차점 크기 계산
2. 색칠된 부분의 시작점 계산
3. 색칠된 부분을 그리기 위해 CAShapeLayer를 사용합니다. 세 번째 단계별 베지어 곡선에 A에 레이어를 추가합니다.