ios - UIScrollView Frame Always CGRectZero -


मेरे पास एक निब है जिसमें मानक UIView है और मैंने भी UIScrollView एक IBOutlet के रूप में (हाँ, इसे झुका हुआ है), मुख्य UIView के उपदृश्य के रूप में नहीं, बल्कि अपने स्वयं के बाहर ही है Autolayout बंद है स्क्रॉल व्यू में कई सबव्यूज़ हैं और मुख्य दृश्य से बड़ा है। viewWillAppear: में, मैं अपने मौजूदा फ्रेम आकार के UIScrollView के कंटेट साइज़ को सेट करता हूं, और उसके फ्रेम को मुख्य दृश्य के आकार में सेट कर देता हूं, और इसे एक के रूप में जोड़ें मुख्य दृश्य का सबव्यू।

दुर्भाग्य से, कुछ भी नहीं दिख रहा है जब मैं NSLog मेरे UIScrollView के फ्रेम के रूप में {0, 0, 0, 0} ( CGRectZero < / code>)। मैंने सोचा था कि यह अजीब है, इसलिए मैं वापस आ गया और फ्रेम में प्रवेश करने की कोशिश की, इससे पहले कि मैंने इसमें कोई बदलाव किया। फिर भी शून्य मेरे किसी भी तत्व को देखने के लिए कुछ भी करने से पहले इसे viewDidLoad में लॉग आउट किया जाता है फिर भी शून्य (मेरे निब में एफडब्ल्यूआईड, फ्रेम है {0, 0, 320, 896} )

मुझे अपने कई नियंत्रकों के साथ यह मुद्दा मिला है, लेकिन ऐसा लगता है मारो या छोड़ दो। कभी-कभी यह काम करता है, दूसरी बार मुझे खाली फ्रेम मिलती है सामान्यतया, सब कुछ से शुरू करने से समस्या ठीक हो रही है, लेकिन मुझे नहीं पता कि क्यों, जैसा कि मैंने एक ही समय में सब कुछ सेट कर रहा हूं।

Xcode संस्करण 6.1 (6A1052d) चल रहा है, आईओएस एसडीके 8.1

एक तैनाती के लक्ष्य के साथ मुझे बताएं कि अगर कोई अन्य प्रासंगिक जानकारी है जो मैं मदद कर सकता हूं।


संपादित करें 1: मेरे < कोड> UIScrollView एक "सबव्यू" होने के नाते, यह है कि मेरा दृष्टिकोण पदानुक्रम दस्तावेज़ रूपरेखा की तरह दिखता है:
दस्तावेज़ आउटलाइन
जैसा कि आप देख सकते हैं, UIScrollView दृश्य नियंत्रक का "सबव्यूव्यू" है, लेकिन "मुख्य" UIView जिसमें नियंत्रक का दृश्य आउटलेट है।


संपादित करें 2: अधिक चित्र और कुछ कोड। मेरे निब की स्थापना के बारे में यह एक बेहतर नतीजा है:
निब स्क्रीनशॉट

मैं अपने scrollView को मुख्य UIView में निम्नानुसार जोड़ता हूं:

  - (शून्य) दृश्यविलएपीपर: (BOOL) एनिमेटेड {[सुपर व्यूव्वलएपियर : एनिमेटेड]; ScrollView.contentSize = scrollView.frame.size; ScrollView सेटफ़्रेम: CGRectMake (0, 100, self.view.frame.size.width, self.view.frame.size.height - 100); // मैं इसे थोड़ा संशोधित कर रहा हूं क्योंकि इसमें अन्य चर हैं जो कि अपनी वाई स्थिति और ऊँचाई निर्धारित करते हैं [आत्म। दृश्य addSubview: scrollView]}  

लेकिन मैं अभी भी कोई नहीं सोचता उस कोड के मामलों - जो भी कारण हो, मेरा UIScrollView वापस आ रहा है शून्य । अगर मेरे पास मेरे निब में देखा गया दृश्य है, तो आउटलेट ठीक से जुड़ा हुआ है, फिर भी दृश्य कैसे होगा? मैं अपने नियंत्रक को initWithNibName के माध्यम से प्रोजेक्ट सफाई करने का प्रयास किया है, और ऐप हटा रहा हूं और पुनः इंस्टॉल कर रहा हूं।

एक उत्तर पर सबसे अच्छा अनुमान है, और कुछ टिप्पणियां:

  • Nibs को ऑब्जेक्ट पेड़ों को केवल क्रमबद्ध किया जाता है आप के रूप में कई दृश्य के रूप में आप रूट के रूप में चाहते हो सकता है। समस्या (बड़ी है!) यह है कि यदि वे आउटलेट्स को "कनेक्टेड" नहीं हैं जो कि को बनाए रखता है , कुछ बिंदु पर आप उन संदर्भ को खो देंगे।

चूंकि आपका UIScrollView निब पर मुख्य दृश्य नियंत्रक दृश्य का एक सबव्यूव नहीं है, इसे इसके द्वारा नहीं रखा गया है (विचार उनके उप-दृश्यों को बनाए रखता है) इसलिए, यह आपके पर निर्भर है कि आप इसे अपने दृश्य नियंत्रक पर रख सकते हैं।

मेरा अनुमान है कि इस बिंदु पर आप दृश्य नियंत्रक में फ्रेम सेट करने का प्रयास कर रहे हैं, तो स्क्रॉल व्यू पहले ही चला गया है। मुझे यकीन नहीं है कि यह निश्चित है कि आप कब यह कर रहे हैं, लेकिन यह कुछ रन लूप के बाद हो सकता है, इसलिए अनुपस्थित स्क्रॉल दृश्य को डिलोक किया गया है।

कार्यवाही:

  1. इसके बजाय IBOutlet के लिए एक चर के, एक मजबूत प्रॉपर्टी ( @property (मजबूत, nonatomic) IBOutlet UIScrollView * scrollView ) का उपयोग करें।
  2. __ मजबूत योग्यता के लिए
  3. UIScrollView को एक सबव्यू के भीतर जोड़ें, इसलिए जब ऑब्जेक्ट ट्री deserialized है पहले से ही उसके अभिभावक द्वारा रखे गए हैं।

यह देखते हुए कि आप मुख्य रूप से UIScrollView को मुख्य दृश्य पदानुक्रम के बाहर डालते हैं, मैं मान रहा हूँ कि आप विकल्प नहीं चाहते 3, इसलिए मैं सिर्फ 1 के साथ जाऊंगा।


Comments

Popular posts from this blog

HTML/CSS - Automatically set height width from background image? -

php - Mysql Show Process - Sleep Commands and what to do -

c - What is the address of buf (the local variable in the main function)? -