2009-05-04 8 views
16

प्रलेखन का कहना है कि clipsToBoundsUIView की संपत्ति चित्र को सीमाओं पर क्लिप करेगी, या अधिक सटीक रूप से subViewsuperView की सीमाओं के बाहर नहीं खींचा जा सकता है।UIView क्लिप ToBounds संपत्ति: क्या यह प्रदर्शन में सुधार करता है?

अच्छा लगता है, लेकिन अभ्यास में इसका क्या अर्थ है?

अगर मैं सेट कि हाँ है, तो मेरी subView स्वचालित रूप से केवल उन हिस्सों जो superView की सीमा के बाहर नहीं हैं आकर्षित करेगा। इसलिए यह समग्र प्रदर्शन को बढ़ाता है या क्या मुझे अभी भी यह सुनिश्चित करना है कि मैं कोई भी दृश्य नहीं बना रहा जो दिखाई नहीं दे रहा है, यानी UIScrollView के अंदर?

उत्तर

23

मुझे लगता है कि यह विपरीत है: क्लिपिंग चालू करना प्रदर्शन को नुकसान पहुंचाता है क्योंकि इसे एक क्लिपिंग मास्क सेट करना होता है। मुझे अस्पष्ट रूप से कहीं पढ़ना याद है, लेकिन मुझे अब यह नहीं मिल रहा है।

+2

मुझे लगता है कि आप सही हैं। सीधे शब्दों में कहें, ओएस को क्लिपिंग करने के लिए कुछ करना है, इस प्रकार, यह प्रदर्शन को नुकसान पहुंचाता है। – Kriem

+2

लेकिन क्लिपिंग स्वयं ऐसी चीज नहीं है कि सिस्टम किसी भी विधि को बताता है जो सीमाओं के बाहर आकर्षित करना चाहता है: "हे आदमी, मत करो। अपना समय बचाएं, चाय का एक कप प्राप्त करें। यहां आकर्षित करने की ज़रूरत नहीं है ! "? – Thanks

+0

असल में, यह है। दृश्यों के पीछे, ओएस ओपनजीएल जैसी चीजें कर रहा है जहां इसे तय करना है कि क्या आकर्षित करना है और नहीं। निर्णय लेने के लिए सीपीयू-चक्र की आवश्यकता होती है। – Kriem

0

(संभव) प्रदर्शन हिट केवल दृढ़ संकल्प है यदि आप दृश्य पदानुक्रम को जानते हैं। जैसा ऊपर बताया गया है, आम तौर पर रेंडरर दृश्य को आकर्षित करने के लिए जीपीयू चक्र का उपयोग करेगा, पदानुक्रम के भीतर कुछ दृश्य drawRect: का उपयोग करता है। यह OpenGL ES अनुप्रयोग को प्रभावित नहीं करता है क्योंकि drawRect: इस प्रकार के ऐप्स में छोड़ा गया है।

मेरी समझ से, क्लिप किए गए क्षेत्र का निर्धारण और प्रदर्शन वास्तव में पूरे दृश्य की गणना/ड्राइंग/मिश्रण से कम चक्र ले सकता है। OpenGL ES 2.0 क्लिपिंग की गणना जीपीयू में की जा सकती है।

1

क्लिप टॉबाउंड्स के लिए उपयोग केस उप-दृश्यों के लिए अधिक है जो आंशिक रूप से मुख्य दृश्य के बाहर हैं। उदाहरण के लिए, मेरे पास अपने माता-पिता (आयताकार) UIView के किनारे पर एक (परिपत्र) सबव्यू है। यदि आप YES को क्लिप टॉबाउंड सेट करते हैं, तो केवल आधा सर्कल/सबव्यू दिखाया जाएगा। यदि NO पर सेट किया गया है, तो पूरा सर्कल दिखाई देगा। बस इतना सामना करना पड़ा कि साझा करना चाहता था।