2009-07-24 8 views
45

UIView में CALayer है। यह बहुत यकीन है। लेकिन दोनों ऐसा कुछ प्रदान करते हैं जो एक ही चीज़ का मतलब है।UIView के क्लिप के बीच संबंध कैसे है टोबाउंड्स और कैलियर के मास्क टॉबाउंड्स?

अगर मैं clipsToBounds=YES सेट करता, तो क्या यह परत masksToBounds=YES भी सेट करेगा? अलग-अलग नाम क्यों हैं? कोई जानता है?

उत्तर

96

वे अलग-अलग नाम हैं क्योंकि UIView और CALayer अलग हैं और उनके साथ जुड़े विभिन्न शब्दावली हैं, लेकिन वे कार्यात्मक रूप से समकक्ष हैं। प्रभावशाली

-(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 
+0

वाह,: आप clipsToBounds एकत्रित न तो आप यह सिर्फ masksToBounds कॉल (disassmebly सिम्युलेटर ढांचे से है, इसलिए 86) देखेंगे! आप इस विवरण कैसे प्राप्त करते हैं? क्या यह सिर्फ एक्सकोड में किया जा सकता है जब इमारत या क्या कोई उपकरण चल रहा है यह जांचने के लिए आवश्यक है? – Thanks

+3

त्वरित disassembly के लिए मैं otool का उपयोग करें, जो डेवलपर उपकरण का हिस्सा है। अगर मैं बहुत सारे कोड से घूमता हूं तो मैं ओटीएक्स का उपयोग करता हूं ताकि एक पूर्ण असेंबली सूची उत्पन्न हो सके जिसमें मेरे लिए सभी चयनकर्ता लुकअप भी शामिल हो। –

+0

आप इसे देखने से कैसे कह सकते हैं, कि यह वास्तव में मास्क टॉबाउंड को कॉल करता है? – Macmee

संबंधित मुद्दे