一个UIView
有一个CALayer
。 这是相当肯定的。 但两者似乎提供的东西,这意味着同样的事情。
如果我设置clipsToBounds=YES
,就这也设置图层的masksToBounds=YES
? 为什么不同的名字? 有谁知道?
一个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为是它消除了阴影,但夹的内容,如果我将它设置为不显示它的影子,但不夹的内容。
我做了这解释了它更好的项目了解ClipToBound而MasksToBound
我得出的结论是CALayer的不是容器,但它仅仅是代表与视觉内容在屏幕上的一个矩形的类。 上的UIView所做的每一图纸推移的CALayer这会导致视觉内容绘制