2015-11-15 41 views
5

UIScrollView'im var. Şu an sadece ekranın yüksekliğinin iki onu kuruyorum (bu durumda çerçeve sadece UIScreen.mainScreen().bounds olan):Swift: UIScrollView contentSize yüksekliğini içeriklerin yüksekliğine nasıl ayarlanır?

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) 
    } 
} 

Ancak, ben sadece içindeki tüm içeriklerin boyutu olmak istiyorum. Bunu nasıl yapardım? Bu, tüm alt görünümleri ekledikten sonra contentSize'u ayarlamam gerektiği anlamına mı geliyor?

+0

Kaydırma görünümündeki sorun, kaydırma görünümü boyutunun içerik boyutuna eşit olmamasını sağlamalısınız !!! Bunu yaparsanız, kaydırma ekranı kaydırılmaz! İçerik boyutu, kaydırma görünümü boyutundan daha büyük olmalıdır –

+0

İyi bir şekilde içeriğimin gerçekten uzun olmasını bekliyorum, dolayısıyla içerik boyutunu 2x olarak ayarlamak ekranın kaydırılabilir olmasını sağlar. Ancak, içerik boyutunun alt görünümlerin toplam yüksekliği – Edmund

cevap

9

Bu, tüm alt görünümleri ekledikten sonra contentSize ayarlamanız gerektiği anlamına mı geliyor?

Temel olarak evet. Amacınız kaydırma görünümünü küçük ve içerik boyutunu büyük yapmak olmalıdır. Kaydırma görünümünü kaydırılabilir yapan şey budur: contentSize kendi sınır boyutlarından daha büyüktür. Bu nedenle, kaydırma görünümünün kendisini, süper görünümünün bounds ile aynı olan frame olması için ayarlayın, ancak tüm alt görünümlerini kucaklamak için contentSize değerini ayarlayın.

+3

olduğundan emin olmak isterim, bir uiscrollview öğesinin tüm alt görünümlerinin toplam yüksekliğini nasıl bulurum? – Edmund

+0

Burada, kitabımdan şunu yapıyorum: https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch07p360scrollViewInCode/ch20p570scrollViewInCode/ViewController.swift Bu örnekte, kaydırma görünüm kodda oluşturulmuştur ve hepsi de içeriğidir, bu yüzden ben bunları koyduğum pozisyonları izleyerek içeriğin yüksekliğini öğreniyorum; ama aynı şey tamamen storyboard editöründe mümkündür ve daha sonra örnekler bunu göstermektedir. – matt

+0

, bu nedenle yüksekliği bir değişken olarak kaydediyorsunuz ve her artırdığınız bir alt görünüm eklediğinizde, sonunda kaydırma görünümünün yüksekliğini bu varlığa ayarladınız mı? – Edmund

İlgili konular