2015-11-15 3 views
5

Ho un UIScrollView. In questo momento sto solo impostandolo a raddoppiare l'altezza dello schermo (cornice in questo caso è solo UIScreen.mainScreen().bounds):Swift: Come impostare il contenuto di UIScrollViewSize height to height of contents?

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

Tuttavia, voglio solo che sia la dimensione di tutti i contenuti al suo interno. Come lo farei? Questo significa che devo impostare contentSize dopo aver aggiunto tutte le sottoview?

+0

il problema con la vista di scorrimento è, non si dovrebbe davvero rendere la dimensione della vista di scorrimento uguale alla dimensione del contenuto !!! Se lo fai, la vista di scorrimento non scorrerà !!! La dimensione del contenuto dovrebbe essere più grande della dimensione della vista di scorrimento –

+0

e mi aspetto che il mio contenuto sia molto lungo, quindi l'impostazione della dimensione del contenuto a 2 volte l'altezza dello schermo lo rende scorrevole. tuttavia, voglio che la dimensione del contenuto sia l'altezza totale delle sottoview è – Edmund

risposta

9

Ciò significa che devo impostare il contenutoSize dopo aver aggiunto tutte le sottoview?

Fondamentalmente sì. Il tuo obiettivo dovrebbe essere quello di rendere la vista di scorrimento piccola e la dimensione del contenuto grande. Questo è ciò che rende scorrevole una vista scorrevole: la sua contentSize è più grande della sua dimensione limite. Quindi, imposta la visualizzazione a scorrimento per avere una frame uguale alla bounds della sua superview, ma poi imposta la sua contentSize per abbracciare tutte le sue sottoview.

+3

come trovo l'altezza totale di tutte le sottoview di una vista panoramica? – Edmund

+0

Qui, dal mio libro, c'è un esempio di me che lo fa: https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch07p360scrollViewInCode/ch20p570scrollViewInCode/ViewController.swift In questo esempio, la pergamena la vista è creata in codice e così sono tutti i suoi contenuti, quindi imparo l'altezza dei contenuti guardando le posizioni in cui li metto; ma la stessa cosa è possibile interamente nell'editor storyboard, e gli esempi successivi lo illustrano. – matt

+0

in modo da memorizzare l'altezza come una variabile e ogni volta che aggiungi una visualizzazione secondaria la incrementi e alla fine imposti l'altezza della vista di scorrimento su tale var? – Edmund