2015-01-25 7 views
14

पर काम नहीं कर रहा है मैंने अपने स्टोरीबोर्ड में एक UIScrollView बनाया है और UIScrollView के अंदर एक कंटेनर व्यू में 12 UIButtons जोड़े हैं।UIScrollView के निचले हिस्से में UIButtons

आईफोन 5 एस सिम्युलेटर पर चलते समय, स्क्रीन पर 9 बटन देखे जा सकते हैं, शेष बटन केवल स्क्रॉल करते समय ही देखे जा सकते हैं।

9 बटन जिन्हें स्क्रीन पर शुरू में देखा जा सकता है, के साथ बातचीत की जा सकती है। हालांकि स्क्रॉल व्यू के नीचे 3 बटन (जिसे देखने के लिए स्क्रॉल किया जाना है) को बातचीत नहीं की जा सकती है।

मैंने एक आईफोन 6 सिम्युलेटर पर ऐप चलाया जो स्क्रॉल किए बिना स्क्रीन पर सभी 12 बटन प्रदर्शित करता है और नीचे 3 बटन काम करते हैं।

मैं ऑटोलायआउट का उपयोग कर रहा हूं।

मैंने सामग्री के साथ झुकाव करने की कोशिश की है UIScrollView का आकार और इससे मदद नहीं मिलती है।

+0

कोड जहां आप बटन जोड़ रहे हैं दिखाएँ (UIDevice.current.isSmallDevice UIDevice का ही विस्तार है कि स्क्रीन आकार के द्वारा निर्धारित एक bool रिटर्न के लिए एक कॉल है)। – Rashad

+0

'UIScrollView' (या कंटेनर व्यू) फ्रेम शायद आप अपेक्षा न करें। सुनिश्चित करें कि यह सबव्यू क्लिप क्लिप करने के लिए सेट है और फिर से चलाएं। – Stavash

+0

@Rashad मैंने स्टोरीबोर्ड –

उत्तर

25

ऐसा लगता है कि आपको कंटेनर व्यू की फ्रेम ऊंचाई बढ़ाने की आवश्यकता है। ScrollView के contentSize केवल यह प्रभावित करता है कि यह कैसे स्क्रॉल करेगा, जो यहां अप्रासंगिक है।

यदि बटन कंटेनर व्यू के बाहर है, तो यह अभी भी दिखाई देगा। हालांकि, यह किसी भी स्पर्श घटना का जवाब नहीं दे सकता है।

+0

जो काम करता है! धन्यवाद, यह नहीं पता था कि कंटेनर दृश्य ऊंचाई और सामग्री स्क्रॉल व्यू का आकार 2 अलग-अलग चीजें –

+0

@WesleyOw आपका स्वागत है। क्या आप इस तरह के उत्तर देने और स्वीकार करने के लिए बहुत दयालु हो सकते हैं? – skyline75489

+0

अपवर्तित होगा लेकिन मेरे पास पर्याप्त प्रतिनिधि नहीं है :( –

2

मेरे लिए यह था सब सिर्फ सही का निशान हटाएँ चेकबॉक्स कि ViewController की स्टोरीबोर्ड में स्क्रॉल देखें Insets समायोजित करने के लिए।

enter image description here

पुनश्च: ऊपर जवाब मेरे लिए काम किया नहीं था।

2

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

अपनी सामग्री दृश्य को अपनी ऊंचाई बढ़ाने के लिए, आपको ऊंचाई बाधा जोड़ने की आवश्यकता है, फिर इसे आउटलेट में असाइन करें ताकि आप आसानी से अपने कोड में इसके मूल्य को कुशल बना सकें। फिर सामग्री दृश्य की ऊंचाई बाधा प्राथमिकता 1000 ("आवश्यक") पर सेट करें और सामग्री दृश्य की "बराबर चौड़ाई: देखें" बाधा प्राथमिकता 750 (उच्च) पर सेट करें।

0

कंटेनर से स्क्रॉलव्यू में सभी सबव्यू जोड़ें। और कंटेनर छुपाएं। सुनिश्चित करें कि कंटेनर (scrollView का कंटेनर व्यू) scrollView का सबव्यू भी होना चाहिए।

0

एक और विकल्प सामग्री दृश्य पर प्राथमिकता को कम करना है। केंद्र वाई बाधा।

एक्सकोड 9 में, मैंने सामग्री को आवश्यकतानुसार देखा और बटन को आईफोन 5 पर दृश्य के नीचे बढ़ाया गया। मैंने दृश्य नियंत्रक में scrollView.contentSize.height और contentView.frame का गतिशील रूप से आकार बदल दिया। ScrollView मेरे लिए स्क्रॉल किया गया था लेकिन मैं अभी भी बटन का चयन करने में असमर्थ था और स्टोरीबोर्ड में चेतावनियां देख रहा था।

सामग्री के लिए केंद्र वाई संरेखण प्रतिबंध पर प्राथमिकता कम करने के बाद, स्टोरीबोर्ड में चेतावनियां गायब हो गईं और मैं स्क्रॉल व्यू के नीचे स्क्रॉल करने में सक्षम था और आईफोन 5 सिम्युलेटर पर बटन का चयन कर रहा था।

enter image description here

नोट: मैं अभी भी उपकरण के आकार की जाँच कर रहा हूँ और scrollView.contentSize.height() छोटे उपकरणों के लिए viewWillLayoutSubviews में मूल्य का आकार बदलने।

override func viewWillLayoutSubviews() { 
     super.viewWillLayoutSubviews() 
     scrollView.contentSize.height = (UIDevice.current.isSmallDevice) ? 560 : contentView.frame.size.height 
    } 

संबंधित मुद्दे

 संबंधित मुद्दे