views:

398

answers:

1

A UIView has a CALayer. That's pretty sure. But both seem to provide something that means the same thing.

If I'd set clipsToBounds=YES, would this also set the layer's masksToBounds=YES? Why different names? Anyone knows?

+4  A: 

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
Louis Gerbarg
wow, impressive! how do you get to this details? could that be done just in xcode when building or is there a tool needed to check what's going on?
Thanks
For quick disassembly I use otool, which is part of the Developer tools. If I walking through a lot of code I tend to use otx to generate a complete assembly listing including doing all the selector lookups for me.
Louis Gerbarg