UIView的clipsToBounds和CALayer的masksToBounds是什么关系? [英] How is the relation between UIView's clipsToBounds and CALayer's masksToBounds?

查看:27
本文介绍了UIView的clipsToBounds和CALayer的masksToBounds是什么关系?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一个 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?

推荐答案

它们是不同的名称,因为 UIViewCALayer 是不同的,并且有不同的术语与之关联,但是它们在功能上是等效的.如果你反汇编 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 (disassembly 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的masksToBounds是什么关系?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆