क्लिप कैसे काम करता है


110

मैं जानना चाहूंगा कि UIViewसंपत्ति का उपयोग कैसे करना है clipsToBounds

आधिकारिक प्रलेखन निम्नलिखित कहता है:

clipsToBounds संपत्ति

एक बूलियन मान जो यह निर्धारित करता है कि क्या साक्षात्कार दृश्य की सीमा तक सीमित हैं।

चर्चा
इस मान को सेट करने के YESकारण रिसीवर के सीमा में उपविभाजित होने का कारण बनता है। यदि सेट किया जाता है NO, तो ऐसे सबव्यूअर, जिनके फ्रेम रिसीवर के दृश्यमान सीमा से परे होते हैं, क्लिप नहीं होते हैं। डिफ़ॉल्ट मान है NO

लेकिन मैं इस पर स्पष्ट नहीं हूं कि इसका क्या मतलब है। मुझे कैसे उपयोग करना चाहिए clipsToBounds? इस संपत्ति को YESवास्तव में सेट करने के परिणाम क्या हैं ? या करने के लिए NO?

जवाबों:


283

यदि मेरा सुपरवाइव प्रत्येक तरफ 10 इकाइयों को मापने वाला एक बॉक्स है, और मेरा सबव्यू 20 यूनिट चौड़ा है, तो clipsToBoundsसेट के साथ YES, मैं केवल सबव्यू का हिस्सा देखूंगा जो सुपरवाइवे की सीमा के भीतर फिट बैठता है। अन्यथा, यदि clipsToBoundsयह सेट है NO, तो मैं संपूर्ण सबव्यू देखूंगा, यहां तक ​​कि सुपरवाइवे के बाहर के हिस्से (यह मानकर कि हम अभी भी स्क्रीन पर हैं)।

एक दृश्य उदाहरण के रूप में, स्टोरीबोर्ड पर स्थापित निम्नलिखित विचारों पर विचार करें:

यहां छवि विवरण दर्ज करें

यह एक सफ़ेद है UIView, ऊपर के बाएं कोने में एक लेबल है जिसमें या तो एक सरल "1" या "2" है ताकि मैं इन पर चर्चा कर सकूं view1या view2। इसके अतिरिक्त, काला दृश्य सफेद दृश्य के समान आकार का है, लेकिन यह मूल सफेद दृश्य के केंद्र में है।

नियंत्रक की viewDidLoadविधि में, हमारे पास निम्नलिखित कोड हैं:

उद्देश्य सी:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view1.clipsToBounds = YES;
    self.view2.clipsToBounds = NO;
}

स्विफ्ट:

override func viewDidLoad() {
    super.viewDidLoad()
    self.view1.clipsToBounds = true
    self.view2.clipsToBounds = false
}

जब हम कोड चलाते हैं और सिम्युलेटर या डिवाइस में देखते हैं, तो हमें निम्नलिखित परिणाम मिलते हैं:

यहां छवि विवरण दर्ज करें

इसलिए, इन विचारों को पहचानने (छोड़कर clipsToBounds) के बावजूद , वे अलग दिखते हैं। ये क्या clipsToBoundsकरता है नीचे परिणाम प्रदान YESकरने के लिए इसे सेट करते हुए इसे शीर्ष परिणाम प्रदान करना होगा NO

अगर हम दृश्य पदानुक्रम को डिबग करते हैं, तो हम अधिक स्पष्ट रूप से देख सकते हैं कि दोनों ब्लैक बॉक्स वास्तव में सफेद दृश्य के बोर्डर का विस्तार करते हैं, लेकिन केवल 2 इसे दिखाता है जब ऐप वास्तव में चल रहा है:

यहां छवि विवरण दर्ज करें


3
शानदार जवाब! बहुत बढ़िया। लेकिन मेरे पास एक प्रश्न है। UITextViewपरछाई क्यों नहीं दिखाई देती, यदि clipsToBoundsसंपत्ति के बराबर true; ? यदि यह है false, ठीक काम करता है
मन्नोप्सन

1
नोट: यह माता-पिता का दृष्टिकोण है कि आप क्लिप बदलें। तो अगर viewB viewA का सबव्यू है। यह ViewA है कि clipToBounds को सच बनाने की जरूरत है।
सौंदर्यसुबह

उस दृश्य पर मूल दृश्य फ़्रेम से कौन सा दृश्य शो होता है, जो कि टैप जेस्चर काम कर रहा है, क्योंकि मैं जांचता हूं और यह काम नहीं कर रहा है।
प्रवीण टेट

2

इसका अर्थ है एक त्वरित त्वरित उत्तर बनाम स्वीकृत उत्तर

अगर Apple को इस संपत्ति का नाम बदलना था, तो मैं इसका नाम रखूंगा clipSubviewsToBounds:।

मैं बस हमारे कोड में एक बग में भाग गया। जहां माता-पिता के दृष्टिकोण की ऊंचाई निर्धारित की गई थी 0। हमें इसके किसी भी तत्व को देखने की उम्मीद नहीं थी। फिर भी माता-पिता के विचारों की सामग्री दिखाई दे रही थी।

इसकी वजह clipToBoundsयह नहीं थी true। एक बार जब यह सेट हो जाता है trueतो साक्षात्कार की ऊँचाइयों से आगे नहीं बढ़ सकते हैं 0, इसलिए वे बिल्कुल नहीं दिखाते हैं।


यह उत्तर
निम्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.