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

1. AB의 교차점 크기 계산
개인적인 생각이니 한번 드셔보세요.2. 색칠된 부분의 시작점 계산
3. 색칠된 부분을 그리기 위해 CAShapeLayer를 사용합니다. 세 번째 단계별 베지어 곡선에 A에 레이어를 추가합니다.