स्टोरीबोर्ड में UIScrollView का उपयोग कैसे करें


125

मेरे पास सामग्री के साथ एक स्क्रॉल दृश्य है जो 1000px लंबा है और स्टोरीबोर्ड पर आसान डिज़ाइन के लिए इसे बिछाने में सक्षम होना चाहता हूं।
मुझे पता है कि यह प्रोग्रामेटिक रूप से किया जा सकता है लेकिन मैं वास्तव में इसे नेत्रहीन रूप से देखने में सक्षम होना चाहता हूं। हर बार जब मैं किसी स्क्रॉल नियंत्रक पर स्क्रॉल दृश्य डालता हूं तो वह स्क्रॉल नहीं होता। क्या मुझे यह काम करना संभव है जैसे मैं चाहता हूं या मुझे इसे कोड में करना होगा?


1
हाय सब लोग ऐसा करने के नए तरीकों के लिए नीचे टिप्पणी देखें। मैंने यह 2 साल पहले लिखा था और xCode बहुत बदल गया है। अब ऐसा करने के अन्य तरीके हैं ताकि जागरूक रहें। iOS 7 और iOS 8 समाधान टिप्पणियों में सुझाए गए
एलेक्स रेनॉल्ड्स

यहां 2 साल बाद फिर से टिप्पणी मिल रही है कि यह कैसे काम नहीं करता है या ऑटोलॉययट बेहतर है। मूल प्रश्न यह था कि इसे ios 5/6 में कैसे किया जाए। मैं केवल इसके लिए इन दिनों ऑटोलेयूट का उपयोग करता हूं इसलिए आपको भी करना चाहिए। मदद के लिए ऑटोलेयूट पर उत्तर देखें। यदि वे मददगार हैं, तो कृपया ऑटोलॉययट उत्तर दें। सभी को धन्यवाद
एलेक्स रेनॉल्ड्स

जवाबों:


149

मैं अपने खुद के सवाल का जवाब दे रहा हूं क्योंकि मुझे समाधान खोजने में सिर्फ 2 घंटे का समय लगा है और स्टैकऑवरफ्लो इस क्यूए शैली की अनुमति देता है।

स्टोरीबोर्ड में काम करने का तरीका यहां बताया गया है।

1: आप कंट्रोलर पर जाएं और क्लिक करें Attribute Inspector

2: FreeformInferred के बजाय आकार बदलें ।

3: उस स्टोरीबोर्ड पर मुख्य दृश्य पर जाएं, आपका स्क्रॉलव्यू नहीं, बल्कि शीर्ष स्तर का दृश्य।

4: क्लिक करें Size Inspector इस दृश्य को अपने इच्छित आकार पर और सेट करें। मैंने अपनी हाइट को 1000 में बदल दिया।

अब आप देखेंगे कि आप स्टोरीबोर्ड में अपना व्यू सेटअप रखते हैं ताकि आप आसान डिज़ाइन के लिए अपने स्क्रॉल की पूरी ऊँचाई देख सकें।

5: स्क्रोलव्यू पर ड्रॉप करें और इसे स्ट्रेच करें ताकि यह पूरा दृश्य ले सके। अब आपके पास अपने व्यू कंट्रोलर में एक दृश्य पर बैठे 320,1000 के आकार के साथ एक स्क्रॉलव्यू होना चाहिए।

अब हमें इसे स्क्रॉल करने की आवश्यकता है और इसे सामग्री को सही ढंग से दिखाने की आवश्यकता है।

6: अपने स्क्रॉलव्यू पर क्लिक करें और क्लिक करें Identity Inspector

7: तब SIZE के User Defined runtime attributeKeyPath के साथ जोड़ें contentSizeऔर अपनी सामग्री के आकार में रखें। मेरे लिए यह (320, 1000) है।

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

8: टाइप RECT और 0,0,320,416 के runtime attributeसाथ KeyPath के frameसाथ जोड़ें ।

अब जब हम अपना ऐप चलाते हैं तो हमारे पास एक दिखाई देने वाला स्क्रॉलव्यू होता है, जिसका फ्रेम 0,0,320, 416 होता है और इसे नीचे 1000 तक स्क्रॉल किया जा सकता है। हम अपने सबव्यू और इमेज को लेआउट करने में सक्षम हैं और स्टोरीबोर्ड में व्हाट्सएप करते हैं जिस तरह से हम उन्हें दिखाना चाहते हैं। तब हमारी रनटाइम विशेषताएँ इसे ठीक से प्रदर्शित करना सुनिश्चित करती हैं। यह सब बिना कोड के 1 लाइन का है।


5
यदि आप स्क्रोलव्यू ऑटोसाइजिंग सुविधा का सही उपयोग करते हैं, तो आपको frameविशेषता को परिभाषित करने की आवश्यकता नहीं है । दरअसल, सभी उपकरणों का आकार एक जैसा नहीं होता है (iPhone 5)।
Tronix117

Tronix117, तो आप उस विशेषता के बिना इस समस्या को कैसे हल करते हैं?
एंड्रास हटवानी

2
अगर आपके पास iOS 7 का कोई समाधान है तो मुझे बताएं। यह उत्तर एक साल पहले iOS 7 पर पोस्ट किया गया था। मैं तैरा हुआ हूं वरना मैं इसे iPhone5 और ios7 के लिए अपडेट कर देता
एलेक्स रेनॉल्ड्स

2
नोट: iOS7 के लिए समाधान stackoverflow.com/a/22489795/1553014 से
राजा राव

1
नोट: iOS 8.3 XCode 6.3 के लिए, इसका उत्तर यहां दिया गया है: stackoverflow.com/questions/26742230/…
T.Coutlakis

51

यहाँ Auto LayoutXCode 8.2.1 पर मेरे लिए काम करने वाले चरण दिए गए हैं ।

  1. चयन Size Inspectorकी View Controller, और बदलने Simulated Sizeके लिए Freeformऊंचाई के साथ 1000 के बजाय Fixed
  2. RootView के View Controllerरूप में दृश्य का नाम बदलें ।
  3. RootView केScroll View रूप में एक सबव्यू खींचें और इसे स्क्रॉल दृश्य के रूप में नाम बदलें ।
  4. स्क्रॉल दृश्य के लिए बाधाएं जोड़ें :
    • स्क्रॉलव्यू [ऊपर, नीचे, अग्रणी, अनुगामी] = जड़ दृश्य [ऊपर, नीचे, अग्रणी, अनुगामी]
  5. एक खींचें Vertical Stack Viewकी subview के रूप scrollview और के रूप में यह नाम बदलने contentView
  6. सामग्री दृश्य के लिए बाधाएं जोड़ें :
    • ContentView .height = 1000
    • ContentView [शीर्ष, नीचे, अग्रणी, अनुगामी, चौड़ाई] = स्क्रॉल दृश्य [ऊपर, नीचे, अग्रणी, अनुगामी, चौड़ाई]
  7. चयन Attributes Inspectorकी contentView , और बदलने Distributionके लिए Fill Equallyकी बजाय Fill
  8. एक खींचें Viewकी subview के रूप contentView और के रूप में यह नाम बदलने Redview
  9. RedViewRed की पृष्ठभूमि के रूप में सेट करें ।
  10. एक खींचें Viewकी subview के रूप contentView और के रूप में यह नाम बदलने BlueView
  11. BlueViewBlue की पृष्ठभूमि के रूप में सेट करें ।
  12. RootView का चयन करें , और Update Framesबटन पर क्लिक करें।
    • Update Framesबटन के बजाय Xcode8 में एक नया बटन है Resolve Auto Layout Issues। यह एक ताज़ा बटन जैसा दिखता है, स्टोरीबोर्ड के नीचे कंट्रोल बार में स्थित है: फ्रेम्स बटन को अपडेट करें

पदानुक्रम देखें:

  • RootView
    • scrollview
      • contentView
        • Redview
        • BlueView

नियंत्रक देखें (ऊँचाई: 1000):

स्थल

IPhone7 पर चलाएँ (ऊँचाई: 1334/2):

डेमो


मैं एक ही मुद्दा रहा है और सोच रहा था कि यह काम करेगा जब मेरे स्क्रॉलव्यू rootview का आकार नहीं है?
गैलेक्सीविज़ल

लेकिन बात यह है कि यह
wad

मेरे जैसे शुरुआती (Xcode 8.2) के लिए BlueViewसबसे ऊपर के RedViewतल पर सेट करने के लिए एक नोट : 1) BlueView नीचे खींचें RedView(यानी उन्हें ओवरलैप या चरण 4 नहीं होना चाहिए) काम नहीं करेगा)। 2) सबसे नीचे पिन मेन्यू खोलें। 3) शीर्ष मार्जिन बाधा के दाईं ओर छोटे तीर पर क्लिक करें। 4) RedViewउस मेनू से चयन करें और मान को 0. पर सेट करें। यह पिछले Xcode संस्करणों से अलग है जहां आप कुछ चीजें कर सकते हैं जैसे Editor-> Pin-> ... ...
Krøllebølle

बस जिज्ञासु, आप एक नियमित रूप से UIView के बजाय एक ऊर्ध्वाधर स्टैक दृश्य का उपयोग क्यों करते हैं?
चैंजर्स

@ चैंजर्स मैं UIStackViewबाधाओं को स्थापित करने की परेशानी से बचने के लिए उपयोग करता हूं ।
jqgsninimo

43

यहाँ IOS 7 और XCode 5 पर मेरे लिए काम करने वाले चरण दिए गए हैं।

  1. एक ViewController खींचें (यह UIView "व्यू" के साथ आता है)।

    1.1 "कंट्रोलर देखें" चुनें और "फाइल इंस्पेक्टर" चुनें और "ऑटो लेआउट" को अनचेक करें।

  2. एक स्क्रॉल दृश्य खींचें (ViewController के UIView के बच्चे के रूप में "देखें")
  3. स्क्रॉलव्यू चुनें और "पहचान निरीक्षक" खोलें।
  4. KeyPath के लिए "contentSize" दर्ज करें। प्रकार के लिए "आकार" चुनें। और {320, 1000} दर्ज करें मान के लिए ।

    नोट: चरण 4 बस यह कह रहा है कि घुमक्कड़ में कुछ सामग्री है जिसका आकार 320x1000 इकाइयाँ हैं। इसलिए सामग्री सेट करना, स्कोरर का काम करेगा।

  5. दृश्य नियंत्रक का चयन करें, "गुण निरीक्षक का चयन करें" फिर आकार से फ्रीफ़ॉर्म चुनें ।

    नोट: चरण 5 हमें "व्यू" के आकार को बदलने की अनुमति देगा जो दृश्य नियंत्रक के साथ आता है।

  6. "देखें" का चयन करें और फिर "आकार निरीक्षक" का चयन करें।

  7. चौड़ाई को 320 पर सेट करें और ऊंचाई 1000 तक।

नोट: 5, 6 और 7 हमें विशुद्ध रूप से के लिए है देखने फैला या स्टोरीबोर्ड के अंदर पूरे विस्तृत दृश्य। नोट: दृश्य नियंत्रक पर "ऑटो लेआउट" को अचयनित करना सुनिश्चित करें।

आपका दृश्य पदानुक्रम जैसा दिखना चाहिए: अनुक्रम


3
यह तकनीक अभी भी Xcode 6.1 और iOS 8.1 के रूप में काम करती है।
क्रिस हैरिस

1
गजब का। इसके लिए धन्यवाद। निश्चित रूप से Xcode 6.1 और iOS 8.1 पर काम करता है जैसा कि उल्लेख किया गया है।
शंकर कौर

45
ठीक है ... तो क्या हुआ अगर हम ऑटोलैयट की आवश्यकता है?
पोस्टकोडिज़्म

1
मच बेहतर जवाब .. धन्यवाद!
स्टेफमा

1
IOS 8 ऑटो लेआउट और आकार वर्ग stackoverflow.com/questions/26742230/… के
jithin

13

परीक्षण और त्रुटि के घंटों के बाद, मैंने स्क्रॉलबुक में सामग्री डालने का एक बहुत ही आसान तरीका खोजा है जो 'ऑफस्क्रीन' है। XCode 5 और iOS 7 के साथ परीक्षण किया गया। आप इसे लगभग पूरी तरह से स्टोरीबोर्ड में कर सकते हैं, जिसमें 2 छोटे ट्रिक्स / वर्कअराउंड का उपयोग किया जा सकता है:

  1. अपने स्टोरीबोर्ड पर एक व्यू कंट्रौलर खींचें।
  2. इस viewController पर एक स्क्रॉल दृश्य खींचें, डेमो के लिए आप पूरे स्क्रीन को कवर करते हुए, इसके आकार को डिफ़ॉल्ट छोड़ सकते हैं।
  3. अब ट्रिक 1 आती है : स्क्रॉलव्यू में किसी भी एलिमेंट को जोड़ने से पहले, एक रेगुलर 'व्यू' में ड्रैग करें (यह व्यू स्क्रीन से बड़ा हो जाएगा, और इसमें बटन, लेबल जैसे सभी सब एलिमेंट्स शामिल होंगे ... आइए इसे कॉल करते हैं। ' घेरने वाला दृश्य ')।
  4. उदाहरण के 800 में इस आकार को देखने वाले के आकार को घेरने दें ।
  5. कहीं एनकोडिंग दृश्य पर एक लेबल में ड्रॉप करें, कहीं Y स्थिति 200 पर, इसे 'लेबल 1' नाम दें।
  6. ट्रिक 2 : सुनिश्चित करें कि संलग्न दृश्य चुना गया है ( स्क्रॉल दृश्य नहीं! ), और उदाहरण के लिए इसकी वाई स्थिति सेट करें -250, इसलिए आप एक आइटम जोड़ सकते हैं जो स्क्रीन के 'बाहर' है
  7. एक लेबल में ड्रॉप करें, स्क्रीन के नीचे कहीं, इसे 'लेबल 2' नाम दें। यह लेबल वास्तव में 'ऑफ स्क्रीन' है।
  8. संलग्नक दृश्य की Y स्थिति को 0 पर रीसेट करें, आपको अब लेबल 2 दिखाई नहीं देगा, क्योंकि यह स्क्रीन से हटा दिया गया था।

अब तक स्टोरीबोर्ड के काम के लिए, अब आपको स्क्रॉलव्यूस कंटेंट को सेट करने के लिए viewController के 'viewDidLoad' पद्धति में कोड की एक पंक्ति को जोड़ने की आवश्यकता है ताकि इसमें संपूर्ण 'एनक्लोजिंग व्यू' शामिल हो। मुझे स्टोरीबोर्ड में ऐसा करने का कोई तरीका नहीं मिला:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.scrollView.contentSize = CGSizeMake(320, 800);
}

आप एक इंस्पेक्टर इंस्पेक्टर में contentSizeस्क्रॉलव्यू के रूप में कीपथ जोड़कर sizeऔर (320, 1000) पर सेट करके ऐसा करने का प्रयास कर सकते हैं ।

मुझे लगता है कि Apple को स्टोरीबोर्ड में यह आसान बनाना चाहिए, एक TableViewController में आप बस स्टोरीबोर्ड में ऑफस्क्रीन स्क्रॉल कर सकते हैं (बस 20 सेल जोड़ सकते हैं, और आप देखेंगे कि आप बस स्क्रॉल कर सकते हैं), यह एक स्क्रॉलव्यूकंट्रोलर के साथ भी संभव होना चाहिए।


1
यह सही है, जब मैंने अपने ऐप को ऑटो लेआउट का समर्थन करने के लिए हाल ही में शुरू किया था, तो मैंने स्क्रॉलव्यू को एक स्थिर तालिका दृश्य के साथ बदल दिया है। एक ही काम करता है, और कुछ अतिरिक्त फायदे भी हैं।
रॉनी वेब्स

सामग्री बदलने के बारे में गतिशील रूप से क्या करें क्योंकि सभी iPhones एक अलग आकार के साथ आते हैं
वीरेश कुंभार

8

IOS 7 और XCode 5 में iOS7 और ऑटो-लेआउट में काम करने के लिए स्क्रॉलिंग प्राप्त करना।

इसके अतिरिक्त: https://stackoverflow.com/a/22489795/1553014

जाहिर है, हम सब करने की जरूरत है:

  1. स्क्रॉल करने के लिए सभी अड़चनें सेट करें (यानी स्क्रॉल दृश्य पहले ठीक करें)

  2. फिर व्यू (जो कि सुपर व्यू है) स्क्रॉल करने के लिए सबसे अधिक आइटम नीचे से दूरी-स्क्रॉल व्यू बाधा पर सेट करें।

नोट: चरण 2 स्टोरीबोर्ड को बताएगा कि स्क्रॉल सामग्री का अंतिम टुकड़ा स्क्रॉल दृश्य के भीतर कहाँ है।


7

इस उदाहरण के लिए, मैंने इंटरफ़ेस बिल्डर के ऑटोलेयूट फीचर को अनचेक कर दिया है। और, मैं अभी भी उपयोग कर रहा हूं (बिना किसी कारण के) एक्सकोड का अपेक्षाकृत पुराना 4.6.1 संस्करण।

उस व्यू कंट्रोलर से शुरू करें जिस पर एक स्क्रॉल दृश्य है (मुख्य दृश्य)।

1: ऑब्जेक्ट लाइब्रेरी से स्क्रॉल दृश्य में एक कंटेनर दृश्य जोड़ें। ध्यान दें कि स्टोरीबोर्ड में एक नया व्यू कंट्रोलर जोड़ा गया है और इसे स्क्रॉल व्यू के साथ व्यू कंट्रोलर से जोड़ा गया है।

2: कंटेनर व्यू का चयन करें और साइज इंस्पेक्टर पर, इसे ऑटो रिसाईज किए बिना ऊपर और बाएं लंगर डालें।

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

3: इसकी ऊँचाई को 1000 तक बदलें। (इस उदाहरण के लिए 1000 का उपयोग किया जाता है। आपको उस मूल्य को लागू करना चाहिए जिसकी आपको आवश्यकता है।)

4: नए दृश्य नियंत्रक का चयन करें और, गुण निरीक्षक से, आकार को फ्रीफ़ॉर्म में बदलें।

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

5: नए दृश्य नियंत्रक के दृश्य का चयन करें और, आकार निरीक्षक पर, ऊँचाई को 1000 में बदलें (जो कंटेनर दृश्य की ऊँचाई के बराबर है)।

6: अपने परीक्षण के लिए बाद में, जबकि नए दृश्य नियंत्रक के दृश्य पर, शीर्ष पर और दृश्य के तल पर एक लेबल जोड़ें।

7: मूल दृश्य नियंत्रक से स्क्रॉल दृश्य का चयन करें। आइडेंटिटी इंस्पेक्टर पर, KeyPath सेट के साथ एक विशेषता जोड़ें, जिस पर सामग्री सेट करें, आकार सेट करें और {320, 1000} (या आपके कंटेनर दृश्य का आकार) पर सेट करें।

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

8: 4-इंच iPhone सिम्युलेटर पर चलाएँ। आपको शीर्ष लेबल से नीचे लेबल तक स्क्रॉल करने में सक्षम होना चाहिए।

9: 3.5-इंच iPhone सिम्युलेटर पर चलाएँ। आपको शीर्ष लेबल से नीचे लेबल तक स्क्रॉल करने में सक्षम होना चाहिए।

याद रखें कि Xcode 4.6.1 केवल iOS6 और इससे नीचे के लिए ही बना सकता है। IOS6 के लिए इस दृष्टिकोण और निर्माण का उपयोग करते हुए, मैं अभी भी वही परिणाम प्राप्त करने में सक्षम हूं जब ऐप iOS7 पर चलाया जाता है।


5

ध्यान दें कि ए के भीतर UITableView , आप वास्तव में एक सेल या एक तत्व का चयन करके और अपने ट्रैकपैड के साथ ऊपर या नीचे स्क्रॉल करके टेबलव्यू स्क्रॉल कर सकते हैं।

ए के लिए UIScrollView, मुझे एलेक्स का सुझाव पसंद है, लेकिन मैं अस्थायी रूप से व्यू कंट्रोलर को फ़्रीफ़ॉर्म में बदलने की सलाह दूंगा, रूट व्यू की ऊंचाई बढ़ाकर, आपके यूआई (चरण 1-5) का निर्माण, और फिर इसे मानक हीन आकार में बदलते हुए जब आप कर रहे हों। ताकि आपको रनटाइम विशेषताओं के रूप में हार्ड कोड सामग्री आकारों में न आना पड़े। यदि आप ऐसा करते हैं कि आप अपने आप को बहुत सारे रखरखाव के मुद्दों के लिए खोल रहे हैं, तो 3.5 "और 4" दोनों उपकरणों का समर्थन करने की कोशिश कर रहे हैं, साथ ही साथ भविष्य में स्क्रीन रिज़ॉल्यूशन बढ़ने की संभावना है।


4

आपको इस नमूने की तरह केवल सामग्री को सेट करना चाहिए ViewDidAppear पर संपत्ति:

- (void)viewDidAppear:(BOOL)animated{

     [super viewDidAppear:animated];
     self.scrollView.contentSize=CGSizeMake(306,400.0);

}

यह ऑटोलॉययट समस्याओं को हल करता है, और iOS7 पर ठीक काम करता है।


नोट: एलेक्स Zavatone सामग्री सेट करने के लिए एक वैकल्पिक तरीका देता है, कोड लिखे बिना।
टूलमेकरसैट

4

डिस्क्लेमर: - केवल ios 9 और उससे अधिक (स्टैक व्यू) के लिए।

यदि आप ios 9 डिवाइस पर अपना ऐप तैनात कर रहे हैं तो स्टैक व्यू का उपयोग करें । ये रहे चरण: -

  1. बाधाओं के साथ एक स्क्रॉल दृश्य जोड़ें - बाएं से दाएं, नीचे, नीचे, ऊपर (बिना हाशिये के) पर्यवेक्षण के लिए (दृश्य)
  2. स्क्रॉल करने के लिए समान बाधाओं के साथ स्टैक दृश्य जोड़ें।
  3. स्टैक देखें अन्य बाधाएं: - stackView.bottom = view.bottom और stackView.width = स्क्रॉलव्यूऑक्स
  4. अपने विचार जोड़ना शुरू करें। स्क्रॉल दृश्य स्टैक दृश्य के आकार के आधार पर स्क्रॉल करने का निर्णय करेगा (जो अनिवार्य रूप से आपकी सामग्री दृश्य है)

1
यह एक उपयोगी तकनीक है, जो आपको मैन्युअल रूप से जोड़ने के लिए बाधाओं की संख्या को कम करता है। सामान्य तौर पर, स्क्रॉलिंग प्राप्त करने का तरीका यह सुनिश्चित करना है कि सामग्री के आकार की गणना करने के लिए ऑटोलेयूट के लिए पर्याप्त बाधाएं हैं। स्टैक दृश्य आपके लिए उस विवशता का बहुत कुछ करता है। spacingसबव्यू (बच्चों) के बीच कुछ स्थान रखने के लिए स्टैक सेट करें । यदि केवल दो साक्षात्कारों के बीच अधिक स्थान की आवश्यकता है, तो एक "स्पेसर" बच्चे को जोड़ें: निश्चित आकार के साथ एक पारदर्शी उविवि।
टूलमेकरसैट

4

IOS7 में मैंने पाया कि अगर मेरे पास FreeForm- आकार के ViewController पर UIScrollView के अंदर एक दृश्य था, तो यह ऐप में स्क्रॉल नहीं करेगा, चाहे मैंने कुछ भी किया हो। मैंने चारों ओर खेला और पाया कि निम्नलिखित काम करने के लिए लग रहा था, जो कोई FreeForms का उपयोग नहीं करता है:

  1. एक ViewController के मुख्य दृश्य के अंदर एक UIScrollView डालें

  2. स्क्रॉलव्यू पर ऑटोलैयट बाधाओं को उपयुक्त के रूप में सेट करें। मेरे लिए मैंने 0 से टॉप लेआउट गाइड और 0 से बॉटम लेआउट गाइड का इस्तेमाल किया

  3. स्क्रॉलव्यू के अंदर, एक कंटेनर दृश्य रखें। आप जो चाहते हैं उसकी ऊंचाई सेट करें (जैसे 1000)

  4. कंटेनर में ऊँचाई की बाधा (1000) जोड़ें, ताकि वह आकार परिवर्तन न करे। नीचे प्रपत्र के अंत में अतीत होगा।

  5. लाइन जोड़ें [self.scrollView setContentSize: CGSizeMake (320, 1000)]; ViewController में स्क्रॉलव्यू शामिल है (जो आपने एक IBOutlet के रूप में शुरू किया है)

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


मैंने इस उत्तर को उकेरा है क्योंकि मुझे तकनीक पसंद है; हालांकि मेरा मानना ​​है कि आप FreeForm VC के बारे में गलत हैं, जो iOS के वर्जन की परवाह किए बिना स्क्रॉलिंग के साथ हस्तक्षेप कर रहे हैं। IOS 6 (जिसमें ऑटो लेआउट जोड़ा गया) के साथ शुरू, बाधाओं का एक पूरा सेट, जैसा कि अन्य उत्तरों में प्रलेखित है, स्क्रॉल करेगा । मुझे नहीं लगता कि FreeForm उसके साथ हस्तक्षेप करता है (हालांकि मैंने इसकी कोशिश नहीं की है)। शायद आपको कुछ गैर-स्पष्ट बाधा याद आ रही थी; ScrollView + AutoLayout एक हैक का एक सा है।
टूलमेकरसैट

3

मैं अपने 5 सेंट स्वीकार किए गए उत्तर के लिए चाहता हूँ: मैं 2 दिनों के लिए विषय पर शोध कर रहा हूँ और अंत में एक समाधान पाया है कि मैं हमेशा अब तक का उपयोग करूंगा

स्वीकार किए गए उत्तर में आइटम 4 तक जाएं और फ़्रेम और सामग्री के गुणों को जोड़ने के बारे में भूल जाएं और इसी तरह

सब कुछ स्वचालित करने के लिए बस से समाधान का उपयोग करें इस लिंक करें

सब कुछ स्पष्ट, आसान, सुरुचिपूर्ण है और ios 7 पर एक आकर्षण की तरह काम करता है। मैं उस सभी योग्य के साथ बहुत खुश हूं



आपका समाधान (यदि आप अंत तक अपने लिंक का अनुसरण करते हैं) में कोड की एक पंक्ति को शामिल करना शामिल है, इसलिए यह विशेष रूप से प्रश्न के अनुरूप नहीं है - केवल स्टोरीबोर्ड का उपयोग करना
बोरिस गफ्रोव

@BorisGafurov यह ios7 के साथ वैसे भी थोड़ा पुराना नहीं है। और mb यह लाइन में नहीं है, लेकिन मुझे यकीन है कि इसने
ppls के

3

यहाँ एक सरल उपाय है।

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

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

  3. अब बस यह सुनिश्चित कर लें कि स्क्रॉलव्यू के साक्षात्कारों में कुछ बाधाएँ हैं जो स्क्रॉल दृश्य के ऊपर और नीचे को जोड़ती हैं। यदि आपके पास क्षैतिज स्क्रॉलिंग है तो बाएं और दाएं के लिए समान।

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


2

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


IMHO, इसका एक अच्छा जवाब है, स्टैकओवरफ्लो के लोकाचार के खिलाफ नहीं, एक वैकल्पिक दृष्टिकोण का सुझाव देने के लिए (जब तक कि ओपी विशेष रूप से नहीं कहता कि उन्हें इसके बारे में पूछने के तरीके की आवश्यकता है।) और स्टैकओवरफ्लो का सबसे बड़ा मूल्य उन सभी अन्य लोगों की मदद कर रहा है जो साथ आते हैं। और प्रश्नोत्तर पढ़ें। :)
टूलमेकरसैट

1

यहां Xcode 11 का उपयोग करके स्क्रॉलव्यू सेटअप करने का तरीका बताया गया है

1 - स्क्रॉलव्यू जोड़ें और टॉप, बॉटम, लीडिंग और ट्रेलिंग बाधाओं को सेट करें

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

2 - स्क्रॉलव्यू में एक कंटेंट व्यू जोड़ें, कंटेंट लेआउट गाइड के लिए एक कनेक्शन खींचें और लीडिंग, टॉप, बॉटम और ट्रेलिंग चुनें। इसके 'मानों को 0 या आप चाहते हैं कि स्थिरांक निर्धारित करना सुनिश्चित करें।

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

3 - सामग्री दृश्य से फ़्रेम लेआउट गाइड तक खींचें और समान चौड़ाई का चयन करें

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

4 - कंटेंट व्यू के लिए एक ऊँचाई की कमी को निर्धारित करें


0

जाहिर है आप ऊंचाई निर्दिष्ट करने की आवश्यकता नहीं है! यदि यह किसी कारण से बदलता है (आप घटकों का आकार बदलते हैं या फ़ॉन्ट आकार बदलते हैं) तो यह बहुत अच्छा है।

मैंने इस ट्यूटोरियल का अनुसरण किया और सब कुछ काम किया: http://natashatherobot.com/ios-autolayout-scrollview/

(साइड नोट: जब तक आप दृश्य को केंद्र में नहीं रखना चाहते, तब तक viewDidLayoutSubviews को लागू करने की आवश्यकता नहीं है, इसलिए चरणों की सूची और भी छोटी है)।

उम्मीद है की वो मदद करदे!


0

कुंजी सामग्री है।

UIScrollView जोड़ते समय यह अक्सर गायब होता है और संकेत नहीं दिया जाता है।

UIScrollView का चयन करें और पहचान निरीक्षक का चयन करें।

Identity Inspector में contentSizeस्क्रॉलव्यू के रूप में एक KeyPath जोड़ें sizeऔर इसे (320, 1000) पर सेट करें।

दूर स्क्रॉल करें।


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

0

यदि आप सर्वश्रेष्ठ दृष्टिकोण की तुलना में ऑटो-लेआउट का उपयोग कर रहे हैं, तो स्टोरीबोर्ड में स्थिर कोशिकाओं के साथ UITableViewController का उपयोग करना है।

मैंने भी एक बार समस्या का सामना कर लिया है जिसके लिए बहुत अधिक स्क्रॉलिंग की आवश्यकता है ताकि उपर्युक्त तकनीक के साथ UIScrollView को बदलें।

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