मैं इंटरफ़ेस बिल्डर में UIScrollView का उपयोग कैसे करूं?


95

जब मैंने UIScrollViewइसे प्रोग्रामेटिक रूप से जोड़कर अतीत में सफलतापूर्वक उपयोग किया है , तो मुझे इसे विशेष रूप से इंटरफ़ेस बिल्डर में सेट करके काम करने में परेशानी हो रही है।

मेरे iPhone ऐप में एक सरल "के बारे में" पृष्ठ है। इसमें UITextViewकुछ, कुछ आइकन और मेरे अन्य ऐप्स के लिंक हैं। मैंने इन सभी विचारों को अपने साथ जोड़ लिया है UIScrollView, उन्हें व्यवस्थित कर रहा हूं ताकि उनका कुल आकार> 480 हो। जब मैं अपना ऐप लॉन्च करता हूं, तो स्क्रॉलव्यू केवल सामग्री को दिखाता है जो स्क्रीन पर फिट होती है, और कुछ भी नहीं स्क्रॉल करता है।

क्या यह पूरी तरह से आईबी के माध्यम से करना संभव है, या मुझे सामग्री को कोड के माध्यम से हेरफेर करना चाहिए?

जवाबों:


130

आप UIScrollView की सामग्री को सेट करना भूल गए। काफी हद तक आप इंटरफ़ेस बिल्डर से ऐसा नहीं कर सकते। आपको यह स्क्रॉल दृश्य प्रबंधित करने वाले व्यू कंट्रोलर से करना होगा।


42
वाह, इस तरह आईबी बनाता है, व्यर्थ ... यह चाल किया, धन्यवाद।
जॉर्ज आर्महोल्ड

20
आप UIScrollvView का एक उपवर्ग बना सकते हैं जो यह जाँचता है कि क्या वहाँ केवल एक सबव्यू (0,0) है और फिर स्वचालित रूप से उस सबव्यू के आधार पर सामग्री सेट करें।
स्टीफन अरेंटज

1
थोड़ी देर में मुझे जो सलाह मिली है, वह सबसे अच्छा है। मैं यह नहीं पता लगा सका कि मेरा स्क्रॉल दृश्य काम क्यों नहीं किया, और उस जानकारी को सामग्री के बारे में कहीं और नहीं मिला। धन्यवाद।
ड्रू सी

46
मैं इंटरफ़ेस बिल्डर में सामग्री सेट करने का तरीका जानने की कोशिश कर रहा था और मुझे यह चर्चा मिली। कम से कम मेरे लिए, Xcode 4.5 में, मैं "यूजर डिफाइंड रनटाइम अटेंशन" का उपयोग करके इसे सेट कर सकता हूं , contentSizeटाइप नाम की प्रविष्टि जोड़कर Sizeऔर वांछित मान सेट करके।
nlogax

5
मैं अभी भी इस बात से इत्तेफ़ाक़ रखता हूं कि iOS अपने सबव्यू के आयामों के आधार पर स्क्रॉल-व्यू को स्वचालित रूप से सेटcontentSize नहीं करता है , कम से कम डिफ़ॉल्ट व्यवहार के रूप में।
अरोठ

113

Boby_Wan के उत्तर ने मुझे सोच में डाल दिया, और मुझे UIScrollView की सामग्री को इंटरफ़ेस इंटरफ़ेस से कॉन्फ़िगर करने के लिए निम्नलिखित समाधान मिला:

  1. UIScrollViewस्टोरीबोर्ड दृश्य में चयन करें
  2. आइडेंटिटी इंस्पेक्टर के पास जाएं , एक नया यूजर डिफाइंड रनटाइम अटेंडेंट बनाएं (बटन पर क्लिक करें)
  3. विशेषता कुंजी पथ को बदलेंcontentSize
  4. विशेषता प्रकार को इसमें बदलेंSize
  5. अब { वांछित सामग्री चौड़ाई , वांछित सामग्री ऊंचाई } का मान सेट करें

उदाहरण के लिए {320, 920} मान सेट करने से उपयोगकर्ता को iPhone पर एक पूरी अतिरिक्त स्क्रीन नीचे स्क्रॉल करने में मदद मिलेगी।

(मैं xcode 4.3.3 का उपयोग कर रहा हूं, परियोजना का iOS परिनियोजन लक्ष्य 5.1 है)

जब मैंने पहली बार यह किया तो मुझे निम्नलिखित त्रुटि मिली:

गैरकानूनी कॉन्फ़िगरेशन:
     आकार प्रकार उपयोगकर्ता परिभाषित रनटाइम विशेषताओं के साथ 4.3
     मेनस्टोरीबोर्ड.स्टोरीबोर्ड से पहले Xcode संस्करण

यदि आपको भी यह त्रुटि मिलती है तो इसे ठीक करना आसान है: प्रोजेक्ट नेविगेटर में स्टोरीबोर्ड का चयन करें , और फ़ाइल इंस्पेक्टर को लाएं । इंटरफ़ेस बिल्डर दस्तावेज़ अनुभाग ढूंढें / विस्तारित करें , और विकास के लिए एक ड्रॉप डाउन है । सुनिश्चित करें कि यह निर्धारित हैXcode 4.3


7
बहुत बढ़िया मिल गया! PS: मैं स्तब्ध हूं कि यह सबसे अच्छा Apple है। मुझे लगता है कि यह दिखाता है कि यहां तक ​​कि एप्पल के कर्मचारी कभी भी अपने स्वयं के टूल (इंटरफ़ेस बिल्डर) का उपयोग नहीं करते हैं :)।
एडम

शानदार, यह सिर्फ मेरे लिए एक्सकोड 4.4 में काम किया है। लेकिन अब मैं स्क्रॉल व्यू के उस हिस्से पर बटन कैसे लगा सकता हूं जिसे मैं आईबी में "नहीं देख सकता"?
रॉबर्ट एटकिंस

1
मैंने अभी इसे काम किया है-आपको ड्रैग को तब जारी करना होगा जब पॉइंटर अभी भी "स्क्रीन" के अंदर है, अन्यथा यह आपके द्वारा शुरू किए जाने पर वापस स्नैप करेगा। क्या मुसीबत है।
रॉबर्ट एटकिंस

मैंने इसे इस तरह आज़माया, लेकिन मुझे एक त्रुटि मिल रही "this class is not key value coding-compliant for the key keyPath"है क्या आप कृपया मेरी मदद कर सकते हैं कि मैं क्या गलत कर रहा हूँ? कृपया ध्यान दें कि मैं
SoftSan

25

Autolayout (iOS6 +) के साथ, आप सेटिंग से बच सकते हैं contentSize। इसके बजाय निम्नलिखित बाधाओं को निर्धारित करें:

  1. स्क्रॉलव्यू के शीर्ष पर अपने सबसे ऊपरी बच्चे के शीर्ष पर पिन करें।
  2. और उसके सबसे नीचे वाले बच्चे के नीचे की तरफ पिन लगा दें।

1
धन्यवाद - सेटिंग contentSizeXcode 5 और iOS 7 के साथ काम नहीं करता
colincameron

18

आप इसे केवल इंटरफ़ेस बिल्डर का उपयोग करके कर सकते हैं, आइडेंटिटी इंस्पेक्टर (तीसरे इंस्पेक्टर टैब) पर जाएं और एक नया उपयोगकर्ता परिभाषित रनटाइम विशेषता जोड़ें

  • मुख्य पथ: contentSize
  • प्रकार: आकार
  • मान: {चौड़ाई, ऊँचाई}

14

अब स्टोरीबोर्डUIScrollView छोड़ने के बिना स्क्रॉल करने का एक तरीका है :

  1. UIScrollViewस्टोरीबोर्ड में चयन करें , आकार निरीक्षक पर जाएं और सामग्री इनसेट अनुभाग में सामग्री क्षेत्र की ऊंचाई तक नीचे मान (या जो भी अन्य मूल्य आपको बदलने की आवश्यकता है) को बदलें ।
  2. अब आइडेंटिटी इंस्पेक्टर के पास जाएं और एक नया यूजर डिफाइंड रनटाइम अटेंशन (+ बटन पर क्लिक करके) बनाएं और इसे नाम देंcontentSize । इससे कोई फर्क नहीं पड़ता कि आप किस प्रकार या मूल्य को भरते हैं (आप अपना डिफ़ॉल्ट मान भी छोड़ सकते हैं)।

यह UIScrollViewकाम ठीक से कर देगा, हालांकि मुझे नहीं पता कि दूसरा कदम क्यों आवश्यक है (मुझे संयोग से पता चला)। :(


नीचे का मान बदलें क्या?
१।

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

हां, रीड, आप सही हैं: आपको सामग्री क्षेत्र की ऊंचाई तक नीचे का मान बदलना चाहिए। मैंने इसे दर्शाने के लिए अपनी मूल पोस्ट संपादित की है। धन्यवाद!
राबर्टआरएम

4

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

इंटरफ़ेस बिल्डर के बारे में स्वाभाविक रूप से स्पष्ट नहीं है क्या आप गैर-संग्रहित विचार रख सकते हैं जो निब में संग्रहीत हैं, लेकिन मुख्य रूप से निब के लिए मुख्य रूप से नहीं है।

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

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

रनटाइम में, - (शून्य) viewDidLoad

scrollView.contentSize = scrollView.frame.size;
scrollView.frame = placeholder.frame;
[placeholder.superview addSubView:scrollView];
[placeholder removeFromSuperview];

वैकल्पिक रूप से (यदि आपने किसी प्लेसहोल्डर का उपयोग नहीं किया है):

CGRect f = self.view.frame;
scrollView.contentSize = f.size;
f.origin.x = 0;
f.origin.y = 0;
scrollView.frame = f;
[self.view addSubView:scrollView];

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


1
धन्यवाद - यह अच्छी तरह से काम किया। इसके अलावा प्लेसहोल्डर और स्क्रॉल विचारों के लिए YourViewController.h में IBOutlets घोषित करने और उन्हें इंटरफ़ेस बिल्डर में कनेक्ट करने की आवश्यकता है। और अंत में, 3 लाइन के लिए xCode द्वारा dot.notation की सराहना नहीं की गई थी, इसलिए सामान्य संदेश का उपयोग सिंटैक्स भेजते हैं - फिर सब कुछ बहुत अच्छा काम करता है!
जिया

कोई चिंता नहीं। कोड स्निपेट्स पोस्ट करते समय हमेशा एक खतरा होता है कि कुछ लोग हर स्थिति में काम करने के लिए "सटीक" कोड की अपेक्षा करने के बजाय उन्हें अवधारणा प्राप्त करने के लिए उपयोग नहीं कर सकते।
unsynchronized

यह वह विधि है जिसका मैं वास्तव में उपयोग करता हूं। मुझे इस कार्यक्रम का आकार बदलने की भी आवश्यकता नहीं है। मुझे लगता है कि यह ऐसा तरीका है जिसे करने का इरादा है। यह एक सही जवाब है।
1249 बजे user4951

इसे बाहर खींचने के बाद, मैं इसे सुपर व्यू में ले जाऊंगा। टाडा।
1249 बजे user4951

मैंने वास्तव में स्क्रैडपैड के लिए एक दृश्य के बाहर कुछ दृश्य डिजाइन करने का उपयोग करना शुरू कर दिया था और इस तरह यह कुछ लोगों के लिए जीवन को बहुत आसान बना देता है। इस उत्तर के लिए धन्यवाद।
बेंजामिन

4

Xcode 4.5 में Autolayout का उपयोग करते हुए मेरे आकार निरीक्षक में कोई भी सामग्री अंतर्ज्ञान अनुभाग नहीं है। इसलिए मुझे इसे User Defined Runtime Attributes के तहत जोड़ना पड़ा और फिर इसने ठीक काम किया।

आप "उपयोगकर्ता निर्धारित रनटाइम अटेंडेस" में क्या जोड़ते हैं, वह है कीपथ == सामग्रीइंसेट जो कि "रेक्ट" (UIEdgeInsets, जिसमें एक Rect के समान इनपुट है) का प्रकार है और इसे "टॉप, लेफ्ट}, {बॉटम, राइट} के रूप में परिभाषित किया गया है। सामग्री केवल स्क्रॉल विंडो के क्षेत्र को परिभाषित करती है। contentInset स्क्रॉल करने योग्य क्षेत्र को परिभाषित करता है।

मुझे उम्मीद है कि यह उसी स्थिति में किसी की मदद करता है।


UITextView के लिए "textContainerInset" keyPath का उपयोग करें
Dima Deplov

4

ऊपर दिए गए कई उत्तर भ्रामक या पुराने हैं। 2017 तक (संभवतः बहुत पहले) इंटरफ़ेस बिल्डर स्वचालित रूप से आकार की सामग्री के साथ स्क्रॉल साक्षात्कार का समर्थन करता है। चाल यह है कि XCode स्क्रॉलव्यू और इसके अंदर की सामग्री के बीच की बाधाओं को एक विशेष, गैर-मानक अर्थ देता है। ये "आवक" बाधाएं वास्तव में सामग्री के आकार को प्रभावित नहीं करेंगी क्योंकि आप अन्यथा उम्मीद कर सकते हैं।

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

इसे इस तरह से सोचें - एक स्क्रॉलव्यू के लिए बाध्य बाधाओं में एक विषमता है: स्क्रॉलव्यू से "बाहर" (माता-पिता) दुनिया तक की बाधाएं हमेशा की तरह स्क्रॉलव्यू के आकार और स्थिति का निर्धारण करती हैं। लेकिन स्क्रॉलव्यू "अंदर" की कमी वास्तव में स्क्रॉलव्यू के स्क्रॉल करने योग्य क्षेत्र के आकार और स्थिति को सेट कर रही है, इसे सामग्री से बांधकर।

यह पूरी तरह से गैर-स्पष्ट है क्योंकि जब आप बाधाओं को सेट करने के लिए जाते हैं तो XCode हमेशा वर्तमान रिक्ति का सुझाव देगा और यह कभी भी जानबूझकर आवक और जावक का सामना कर रहे अवरोधों को इस तरह से बदलने के लिए नहीं हो सकता है। लेकिन आप कर सकते हैं और उनके पास ऊपर वर्णित अर्थ है: एक स्क्रॉलव्यू लेआउट को नियंत्रित करता है और एक स्क्रॉल करने योग्य सामग्री क्षेत्र के आकार को नियंत्रित करता है।

मैं इस दुर्घटना से लड़खड़ा गया और फिर यह देखने के लिए कि यह कैसे काम करता है मुझे इस लेख में ले गया जो इसे पूरी तरह से समझाता है और इसके लिए Apple डॉक्स स्रोत का हवाला देता है:

https://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/

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


2

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

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


2

इंटरफ़ेस बिल्डर के माध्यम से एक UIScrollView स्थापित करना सहज नहीं है। इसे स्थापित करने के लिए यहां मेरी जांच सूची है:

  1. UIViewController की XIB फ़ाइल चुनें। इंटरफ़ेस बिल्डर के "आइडेंटिटी इंस्पेक्टर" में, UIView को क्लास टाइप UIScrollView में बदलें

  2. "फ़ाइल इंस्पेक्टर" के तहत, ऑटोलेयआउट को अनचेक करें

  3. "गुण निरीक्षक" के तहत, आकार को फ्रीफ़ॉर्म में बदलें। फिर आप स्क्रॉल दृश्य को मैन्युअल रूप से बढ़ा सकते हैं या "आकार निरीक्षक" के तहत एक कस्टम चौड़ाई और ऊंचाई निर्दिष्ट कर सकते हैं।

  4. "आइडेंटिटी इंस्पेक्टर" में, एक नया यूजर डिफाइंड रनटाइम एट्रिब्यूट जोड़ें, जिसे "साइज़" का "कंटेटसाइज़" कहा जाता है और इसे {320, 1000} जैसे मान में बदल दें। आप इसे प्रोग्रामेटिक रूप से सेट नहीं कर सकते हैं और इसलिए इस चरण की आवश्यकता है ताकि स्क्रॉल दृश्य को पता चले कि स्क्रॉल दृश्य की सामग्री विंडो से बड़ी है।


2

बस अपने स्क्रोलव्यू पर स्वतः हटाएं। फिर कोड इस तरह सरल है:

scrollviewName.contentSize = CGSizeMake(0, 650);

बस .h फ़ाइल पर iboulet गुण बनाएँ। .m फ़ाइल पर संश्लेषित करें। सुनिश्चित करें कि स्क्रॉलिंग सक्षम है।


1

हां, st3fan सही है, UIScrollView की सामग्री का आकार सेट करना होगा। लेकिन आपको इस उद्देश्य के लिए ऑटोलेयूट को बंद नहीं करना चाहिए। आप आसानी से किसी भी कोड के बिना, केवल IB में ऑटोलयूट के साथ UIScrollView की सामग्री को सेट कर सकते हैं।

यह समझना महत्वपूर्ण है कि जब UIScrollView के ऑटोलैयूट कंटेंटसाइज़ का उपयोग सीधे सेट नहीं किया जाता है, तो इसकी गणना UIScrollView के सभी उप-परीक्षणों की बाधाओं के आधार पर की जाती है। और आप सभी की जरूरत है दोनों दिशाओं के लिए साक्षात्कार के लिए उचित बाधाओं प्रदान करते हैं।

उदाहरण के लिए, यदि आपके पास केवल एक सबव्यू है, तो आप इसकी ऊंचाई और जगह को ऊपर से नीचे और सुपरवाइवे से सेट कर सकते हैं (यानी हमारे मामले में स्क्रॉलव्यू) contentSize.height राशि के रूप में गणना की जाती है

Vertical Space (aSubview.top to Superview.top) + aSubview.height + Vertical Space (aSubview.top to Superview.top)

contentSize. उपलब्धता की गणना क्षैतिज बाधाओं से की जाती है।

यदि सामग्री की गणना करने के लिए बहुत कम बाधाएँ हैं तो लेआउट अस्पष्टता के बारे में सूचित करने के लिए व्यू कंट्रोलर दृश्य आइटम के पास ठीक से छोटा लाल बटन दिखाया गया है।

यदि कई उप-साक्षात्कार हैं, तो यह बाधाओं की "श्रृंखला" हो सकती है: सबसे ऊपरी उप-भाग, ऊंचाइयों और साक्षात्कारों के बीच रिक्त स्थान और बॉटमॉस्ट उप-भाग नीचे से नीचे की ओर जैसे कि डेनियल आयटेकिन उत्तर।

लेकिन ज्यादातर मामलों में व्यवहार में यह अधिक सुविधाजनक है कि आवश्यक आकार के साथ एक खाली दृश्य जोड़ना और रिक्त स्थान को ऊपर, बाएं, नीचे, स्क्रॉल के दाईं ओर 0 पर सेट करें। आप इस दृश्य को "सामग्री दृश्य" के रूप में उपयोग कर सकते हैं अर्थात अन्य सभी साक्षात्कार डाल सकते हैं इस पर या यदि आपके पास पहले से ही कई साक्षात्कार हैं और उन्हें स्थानांतरित नहीं करना चाहते हैं और फिर से लेआउट सेट करें तो आप इस सहायक दृश्य को मौजूदा साक्षात्कारों में जोड़ सकते हैं और इसे छिपा सकते हैं।

स्क्रॉलव्यू करने के लिए स्क्रॉल करने योग्य गणना की गई सामग्री स्क्रॉल व्यू आकार से अधिक होनी चाहिए।


1

आपके पास ऑटोलाययट्स के साथ स्टोरीबोर्ड में UIScrollView हो सकता है। मूल रूप से आपको क्या चाहिए:

  1. UIScrollView जोड़ें
  2. इसमें सभी अड़चनें डालें (जैसे ऊपर, बाएँ, दाएँ, नीचे के किनारों से इनसेट)
  3. UIScrollView में 'कंटेनर' UIView जोड़ें
  4. यदि आप केवल एक-दिशा स्क्रॉल (कहते हैं, लंबवत) चाहते हैं: स्पष्ट रूप से ऊँचाई सेट करें (उदाहरण के लिए, 600) और लिंक चौड़ाई UIScrollView की चौड़ाई के लिए।
  5. यदि आप दो-दिशात्मक स्क्रॉल चाहते हैं, तो बस चौड़ाई और ऊंचाई दोनों निर्धारित करें।

स्टोरीबोर्ड सेटअप


0

यहाँ स्क्रॉलबोर्ड को पूरी तरह से स्टोरीबोर्ड में स्क्रीन की तुलना में बड़ी सामग्री के साथ डिजाइन करने का एक उपाय है (अच्छी तरह से, लगभग पूरी तरह से, आपको कोड की 1 एकल पंक्ति भी जोड़ने की आवश्यकता होगी)

https://stackoverflow.com/a/19476991/1869369


0

मुझे एक और सुविधाजनक तरीका पता चला है।

1: स्क्रॉल दृश्य के आकार को इसके अंदर मौजूद सभी यूआई को स्केल करें।

2: स्क्रॉल दृश्य का एक iboutlet जोड़ें।

3: viewDidLoad में, स्क्रॉल दृश्य के ढाँचे को सहेजें।
(उदा। _scrollSize = _scrollView.frame.size;)

4: viewWillAppear में, आपके द्वारा पहले सहेजे गए CGSize द्वारा सामग्री सेट करें।
(उदा। _scrollView.contentSize = _scrollSize;)

5: पूर्ण हो गया


0
  1. UIViewController जोड़ें
  2. UIViewController में 'इंस्पेक्टर इंस्पेक्टर -> सिमुलेटेड मेट्रिक्स' का सेट फ्रीफॉर्म है
  3. UIViewController में 'आकार निरीक्षक -> नियंत्रक देखें' की ऊँचाई 800 है
  4. UIViewController में UIScrollView जोड़ें
  5. सभी बाधाओं को UIScrollView (शीर्ष, बाएं, दाएं, नीचे) में जोड़ें और संरेखण X = केंद्र जोड़ें
  6. UIScrollView में UIView जोड़ें
  7. सभी बाधाओं को UIView (शीर्ष, बाएं, दाएं, नीचे) में जोड़ें और संरेखण X = केंद्र जोड़ें। हां, # 3 में UIScrollView के लिए समान है, लेकिन UIView के लिए
  8. UIView में ऊंचाई की बाधा जोड़ें। उदाहरण के लिए 780
  9. Daud

स्टोरीबोर्ड


0

एक नया Xcode प्रोजेक्ट बनाएं

Main.storyboard फ़ाइल पर नेविगेट करें

स्क्रॉल ऑब्जेक्ट्स लाइब्रेरी से चुनें।

स्क्रॉल दृश्य के लिए फ्रेम सेट करें।

स्क्रॉल दृश्य में एक और दृश्य जोड़ें और फ़्रेम को स्क्रॉल दृश्य के समान रखें।

अब इसकी ऊँचाई और चौड़ाई को गतिशील रूप से सेट करने के लिए आप XIB में ऑटो लेआउट का उपयोग करके एक UIScrollView कॉन्फ़िगर कर सकते हैं

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