2011-10-19 9 views

उत्तर

195

आईओएस पर, प्रत्येक यूआईवीव को कोर एनीमेशन कैलियर द्वारा समर्थित किया जाता है, इसलिए आप UIView का उपयोग करते समय कैलियर से निपट रहे हैं, भले ही आपको इसका एहसास न हो। मैक पर एनएसवीव्स के विपरीत, जो कि कोर एनीमेशन के अस्तित्व से पहले विकसित हुआ था, UIViews को इन कैलियर के चारों ओर हल्के रैपर होने का इरादा है।

जैसा कि मैंने इसी प्रश्न में वर्णित किया है "When to use CALayer on the Mac/iPhone?", सीधे CALayers के साथ काम करने से आपको UIViews पर महत्वपूर्ण प्रदर्शन लाभ नहीं मिलते हैं। UIViews के बजाय CALayers के साथ उपयोगकर्ता इंटरफ़ेस तत्व बनाना चाहते हैं, इसका कारण यह है कि इसे मैक को बहुत आसानी से पोर्ट किया जा सकता है। UIViews NSViews से बहुत अलग हैं, लेकिन CALayers लगभग दो प्लेटफ़ॉर्म पर समान हैं। यही कारण है कि कोर प्लॉट ढांचा अन्य यूआई तत्वों के बजाय कैलियर का उपयोग करके अपने ग्राफ बताता है।

एक बात UIViews कैलियर प्रदान करती है उपयोगकर्ता इंटरैक्शन के लिए अंतर्निहित समर्थन है। वे स्पर्श और अन्य संबंधित कार्यों पर हिट-टेस्टिंग को संभालते हैं जिन्हें कैलियर के पदानुक्रम का प्रबंधन करते समय खुद को बनाने की आवश्यकता होगी। इसे स्वयं लागू करना मुश्किल नहीं है, लेकिन यह एक अतिरिक्त कोड है जिसे आपको कैलियर-केवल इंटरफ़ेस बनाने के दौरान लिखना होगा।

बेस UIView क्लास की अनुमति के मुकाबले अधिक जटिल एनिमेशन करने पर आपको अक्सर UIView के लिए अंतर्निहित परतों तक पहुंचने की आवश्यकता होगी। यूआईवीवी की एनीमेशन क्षमताओं में वृद्धि आई है क्योंकि आईओएस एसडीके परिपक्व हो गया है, लेकिन अभी भी कुछ चीजें हैं जो अंतर्निहित कैलियर के साथ बातचीत करके सर्वोत्तम तरीके से की जाती हैं।

35

रे Wenderlich ब्लॉग से (Tutorial)

CALayers बस दृश्य सामग्री के साथ स्क्रीन पर एक आयत का प्रतिनिधित्व वर्ग हैं। "लेकिन एक डर्न मिनट प्रतीक्षा करें," आप कह सकते हैं, " क्या UIViews के लिए हैं!" यह सच है, लेकिन इसके लिए एक चाल है: प्रत्येक UIView में एक रूट परत होती है जो इसे आकर्षित करती है!

+1

एक अच्छा कलात्मक उत्तर। –

+0

ग्रेट संक्षिप्त उत्तर! –

22

सीधे शब्दों में कहा जाए तो UIView NSResponder से विरासत, उन से घटनाओं को संभालने, CALayer, जो NSObject से विरासत, मुख्य रूप से मोबाइल डिवाइस पर प्रतिपादन, एनीमेशन आदि

0

बड़ा अंतर UIView CocoaTouch लिए बनाया गया है है पर ध्यान केंद्रित करने में शामिल है। यह कुछ इवेंट हैंडलर जोड़ता है जो कैलियर प्रदान नहीं करता था।

6

UIViewCALayers के लिए एक कंटेनर है। UIKit का उपयोग करना।

CALayer जहां हम सामग्री खींचते हैं। CoreGraphics

यदि आप सुविधाओं जैसे कस्टम नियंत्रण के साथ काम करते हैं तो सटीक देशी प्रतिपादन के लिए अधिक परत वाले एकल दृश्य के साथ आगे बढ़ना बहुत अच्छा होगा। चूंकि CALayersUIView से वजन रहित हैं।

मैक और आईओएस के लिए सामान्य कंकाल बनाने के लिए, CALayers का उपयोग करके अपने ऐप के लिए डिज़ाइन का पालन करें। चूंकि यह दोनों प्लेटफार्मों में उपलब्ध है।

UIView स्पर्श इवेंट की तरह होने सुविधा प्रतिनिधियों -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event, tochesStart घटनाओं और अन्य UIKit सुविधाओं की तरह प्रयोग कर प्राप्त किया।

CALayers के साथ काम करने के लिए कोर ग्राफिक्स ज्ञान का उपयोग करें। UIView प्रस्तुत करने के लिए किसी भी साधारण दृश्य के लिए पर्याप्त है।