반응형
UIView의 clipsToBounds와 CALayer의 masksToBounds 사이의 관계는 어떻습니까?
A UIView
에는 CALayer
. 꽤 확실합니다. 그러나 둘 다 같은 것을 의미하는 것을 제공하는 것 같습니다.
내가 설정 clipsToBounds=YES
하면 이것은 또한 레이어를 설정 masksToBounds=YES
합니까? 왜 다른 이름입니까? 아는 사람 있나요?
때문에 그들은 다른 이름입니다 UIView
및 CALayer
다른 및 그와 관련된 다른 용어를 가지고 있지만 기능적으로 동일합니다. 디스 어셈블 clipsToBounds
하면 호출 만 표시됩니다 masksToBounds
(시뮬레이터 프레임 워크에서 디스 어셈블리이므로 x86).
-(BOOL)[UIView(Rendering) clipsToBounds]
+0 3091938a 55 pushl %ebp
+1 3091938b 89e5 movl %esp,%ebp
+3 3091938d e800000000 calll 0x30919392
+8 30919392 59 popl %ecx
+9 30919393 8b4508 movl 0x08(%ebp),%eax
+12 30919396 8b5004 movl 0x04(%eax),%edx (CALayer)_layer
+15 30919399 8b8186cb1301 movl 0x0113cb86(%ecx),%eax masksToBounds
+21 3091939f 89450c movl %eax,0x0c(%ebp)
+24 309193a2 895508 movl %edx,0x08(%ebp)
+27 309193a5 c9 leave
+28 309193a6 e92e211801 jmpl 0x31a9b4d9
어떤 사람은 clipToBounds가 false로 설정되고 maskToBounds가 true로 설정되면 어떤 일이 발생하는지 물었습니다. 또는 누군가가 스크린 샷을 추가하면 더 좋을 수 있습니다.
코너 반경과 그림자를 모두 뷰에 설정하려는 동일한 문제를 발견했습니다.
하지만 masksToBound를 YES로 설정하자마자 그림자를 제거하지만 콘텐츠를 자르고 NO로 설정하면 그림자를 표시하지만 콘텐츠를 자르지 않기 때문에 불가능합니다.
ClipToBound 및 MasksToBound 이해 하기 더 잘 설명하는 프로젝트를 만들었습니다.
CALayer는 컨테이너가 아니라 단순히 시각적 콘텐츠가있는 화면의 사각형을 나타내는 클래스라는 결론에 도달했습니다. UIView에서 수행 된 모든 드로잉은 CALayer로 이동하여 시각적 콘텐츠가 그려집니다.
반응형
'IT story' 카테고리의 다른 글
C #에서 믹스 인을 구현할 수 있습니까? (0) | 2021.01.06 |
---|---|
C #의 부분 인터페이스 (0) | 2021.01.06 |
MySQLnd가 활성 드라이버인지 확인하는 방법은 무엇입니까? (0) | 2021.01.06 |
C #에서 내 자신의 예외를 어떻게 정의합니까? (0) | 2021.01.06 |
jquery-ui 대화 상자 : 대화 상자의 단추를 기본 작업으로 설정 (Enter 키) (0) | 2021.01.06 |