2013-01-07 42 views
6

का ख्याल क्यों नहीं रख रहा है मैंने UICollectionView का उपयोग करके एक ऐप का एक बहुत ही सरल नमूना बनाया है (github पर स्रोत कोड)।ऑटोलायआउट मेरे UICollectionView

सब कुछ ठीक काम कर रहा है, जब तक ऐप पोर्ट्रेट मोड में है। जब इसे लैंडस्केप मोड में बदल दिया जाता है, तो सामग्री कक्ष का उचित आकार नहीं बदला जाता है, और इस प्रकार, कुछ भी प्रदर्शित नहीं होता है।

मैंने सोचा कि सभी आवश्यक ऑटोलाउट बाधाएं मौजूद हैं। मुझे पता है कि मैं collectionView:layout:sizeForItemAtIndexPath: को कार्यान्वित कर सकता हूं, लेकिन मेरा लक्ष्य ऑटोलाउट को यथासंभव उपयोग करना है (बस ऑटोलाउट को बेहतर समझने के लिए)।

मुझे यहां क्या याद आ रही है?

उत्तर

9

आप संग्रह दृश्य की स्थिति और आकार को सेट करने के लिए ऑटोलाउट का उपयोग कर सकते हैं। और आप प्रत्येक सेल के भीतर सबव्यूज़ की स्थिति और आकार सेट करने के लिए ऑटोलाउट का उपयोग कर सकते हैं। लेकिन आप कोशिकाओं की स्थिति और आकार को नियंत्रित करने के लिए ऑटोलाउट का उपयोग नहीं कर सकते हैं। प्रत्येक संग्रह दृश्य कक्ष की स्थिति और आकार सेट करने के लिए आपको संग्रह दृश्य के लेआउट ऑब्जेक्ट का उपयोग करना होगा। यदि आप इंटरफ़ेस अभिविन्यास बदलते समय कक्षों को आकार बदलना चाहते हैं, तो आपको नए आकार की रिपोर्ट करने और लेआउट को अमान्य करने के लिए अपनी लेआउट ऑब्जेक्ट को अपडेट करना होगा।

+2

आईओएस 8 के रूप में कोशिकाओं का आकार स्वयं बनाना संभव है। लेआउट उपयुक्त होने पर आपके सेल का एक उदाहरण बनाएगा और आप या तो ऑटोलायआउट बाधाओं का उपयोग कर सकते हैं या आकार ओवरराइड कर सकते हैं:। लेआउट में अनुमान लगाया जाना चाहिए ItemSize संपत्ति सेट। – fatuhoku