问题描述
UIView
有一个 CALayer
。这很确定。但两者似乎都提供了相同的东西。
A UIView
has a CALayer
. That's pretty sure. But both seem to provide something that means the same thing.
如果我设置 clipsToBounds = YES
,这也设置了图层的 masksToBounds = YES
?为什么不同名字?有人知道吗?
If I'd set clipsToBounds=YES
, would this also set the layer's masksToBounds=YES
? Why different names? Anyone knows?
推荐答案
它们的名称不同,因为 UIView
和 CALayer
是不同的,并且具有与之关联的不同术语,但它们在功能上是等效的。如果您反汇编 clipsToBounds
,您会看到它只是调用 masksToBounds
(不可思议地从模拟器框架,所以x86):
They are different names because UIView
and CALayer
are different and have different terminology associated with them, but they are functionally equivalent. If you disassemble clipsToBounds
you will see it just calls masksToBounds
(disassmebly from the simulator framework, so 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
这篇关于UIView的clipsToBounds与CALayer的maskToBounds之间的关系如何?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!