Swift: Comment définir UIScrollView contentSize de la hauteur à la hauteur du contenu?
J'ai un UIScrollView. Droit maintenant, je suis juste mettre à doubler la hauteur de l'écran (image dans ce cas est juste UIScreen.mainScreen().bounds
):
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)
}
}
Cependant, je veux juste qu'il soit de la taille de tout le contenu à l'intérieur. Comment puis-je faire? Cela signifie que je dois mettre la contentSize
après je ajouter tous les sous-vues?
le problème avec le défilement de l'affichage, vous ne devriez pas vraiment faire défiler la vue de la taille est égale à la taille du contenu!!! Si vous le faites, faites défiler la vue ne sera pas défiler!!! La taille du contenu doit être plus grand que la taille d'affichage de défilement
eh bien, j'attends mon contenu à être vraiment long, de sorte que le réglage de la taille du contenu à 2 fois la hauteur de l'écran fait de défilement. cependant, je veux que la taille du contenu à être quelle que soit la hauteur totale de la sous-vues est
eh bien, j'attends mon contenu à être vraiment long, de sorte que le réglage de la taille du contenu à 2 fois la hauteur de l'écran fait de défilement. cependant, je veux que la taille du contenu à être quelle que soit la hauteur totale de la sous-vues est
OriginalL'auteur Edmund | 2015-11-15
Vous devez vous connecter pour publier un commentaire.
Fondamentalement, oui. Votre objectif doit être de faire défiler la vue de la petite et de la taille du contenu grand. C'est ce qui rend un défilement de l'affichage à défilement: son
contentSize
est plus grand que ses propres limites de taille. Donc, régler le défilement de l'affichage d'uneframe
qui est le même que lebounds
de ses superview, mais alors définir sescontentSize
à embrasser l'ensemble de ses sous-vues.Ici, dans mon livre, est un exemple de me faire ça: github.com/mattneub/Programming-iOS-Book-Examples/blob/master/... Dans cet exemple, le défilement de l'affichage est créé dans le code et sont donc l'ensemble de son contenu, j'ai donc apprendre la hauteur du contenu en regardant les positions au cours de laquelle j'ai mis, mais la même chose est possible entièrement dans le plan de montage de l'éditeur, et plus tard exemples illustrent le fait que.
Pense que sur le fond le plus vue. Il a un
frame
. Cela signifie qu'il a uneorigin.y
(en haut) et unsize.height
. La somme est ley
valeur de ses bas. Mais il est, ex hypoethesi, le plus bas de la vue. De sorte que la somme, lay
valeur du fond de la plus en dessous de la vue, est la hauteur de lacontentSize
(vous pouvez ajouter un peu plus comme remplissage en bas si vous le souhaitez).Vous voudrez peut-être lire mon livre: apeth.com/iOSBook/ch20.html La version en ligne est en Objective-C, pas de Swift (la version actuelle est en rapide), mais vous comprendrez les concepts néanmoins.
Je veux juste dire que c'est l'un des la plupart des réponses concises que j'ai vu sur les paramètres clés de UIScrollView.
OriginalL'auteur matt