2015-11-15 13 views
5

मेरे पास एक UIScrollView है। अभी मैं सिर्फ यह स्थापित करने हूँ स्क्रीन की ऊंचाई दोगुना करने के लिए (इस मामले में फ्रेम सिर्फ UIScreen.mainScreen().bounds है):स्विफ्ट: UIScrollView सामग्री कैसे सेट करें सामग्री की ऊंचाई तक ऊंचाई बढ़ाएं?

class VenueDetailView: UIScrollView { 
    required init?(coder aDecoder: NSCoder) { fatalError("Storyboard makes me sad.") } 

    override init(frame: CGRect) { 
    super.init(frame: frame) 
    contentSize = CGSize(width: frame.width, height: frame.height*2) <---------------- 

    backgroundColor = UIColor.greenColor() 
    } 


    func addBannerImage(imageUrl: NSURL) { 
    let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: 300)) 

    // TODO: Make this asynchronous 
    // Nice to have: cache the image 
    if let data = NSData(contentsOfURL: imageUrl) { 
     imageView.image = UIImage(data: data) 
    } 

    addSubview(imageView) 
    } 
} 

हालांकि, मैं सिर्फ यह उसमें मौजूद सभी सामग्री के आकार होना चाहता हूँ। यह मैं कैसे करूंगा? क्या इसका मतलब है कि मुझे सभी सबव्यूज़ जोड़ने के बाद contentSize सेट करना होगा?

+0

स्क्रॉल व्यू के साथ समस्या यह है कि आपको वास्तव में स्क्रॉल व्यू आकार को सामग्री आकार के बराबर नहीं बनाना चाहिए !!! यदि आप ऐसा करते हैं, तो स्क्रॉल दृश्य स्क्रॉल नहीं करेगा !!! सामग्री आकार स्क्रॉल दृश्य आकार –

+0

से बड़ा होना चाहिए, अच्छी तरह से मैं अपनी सामग्री को वास्तव में लंबे समय तक होने की उम्मीद करता हूं, इसलिए स्क्रीन आकार की 2x तक सामग्री आकार को स्क्रॉल करने योग्य बनाता है। हालांकि, मैं सामग्री आकार चाहता हूं जो सबव्यूज़ की कुल ऊंचाई – Edmund

उत्तर

9

क्या इसका मतलब है कि मुझे सभी सबव्यूज़ जोड़ने के बाद सामग्री सेट करना होगा?

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

+3

है, मुझे uiscrollview के सभी सबव्यूज़ की कुल ऊंचाई कैसे मिलेगी? – Edmund

+0

यहां, मेरी पुस्तक से, यह करने का एक उदाहरण है: https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch07p360scrollViewInCode/ch20p570scrollViewInCode/ViewController.swift उस उदाहरण में, स्क्रॉल दृश्य कोड में बनाया गया है और इसलिए इसकी सभी सामग्रीएं हैं, इसलिए मैं उन पदों को देखकर सामग्री की ऊंचाई सीखता हूं जिन पर मैंने उन्हें रखा था; लेकिन स्टोरीबोर्ड संपादक में पूरी तरह से एक ही बात संभव है, और बाद के उदाहरणों ने इसका वर्णन किया है। – matt

+0

ताकि आप ऊंचाई को एक var के रूप में स्टोर कर सकें और हर बार जब आप एक सबव्यूव जोड़ते हैं तो आप इसे बढ़ाते हैं और अंत में आप स्क्रॉल व्यू की ऊंचाई को उस var पर सेट करते हैं? – Edmund

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