Je suis la conception d'une application swift
qui montre une photo, carte et le contenu - tout cela dans UITableView
en-tête.pourquoi mes contraintes rendent la mise en page différente lors de l'exécution de l'application sur iphone 5 et iphone 6?
Quand je lance l'application sur l'iPhone 5, il ressemble à ceci:
Le champ jaune est une vue de texte qui a les contraintes suivantes:
et :
Cela ressemble bien sur iphone 5. Cependant, quand je le lance sur iPhone 6, je vois:
Je ne comprends pas pourquoi ces deux points de vue diffèrent.
Maintenant, dans mon code, en viewDidLoad()
j'ai un appel à la méthode:
defineHeaderView()
qui renseigne essentiellement la vue d'en-tête avec des données (par exemple le nom d'utilisateur remplit, texte, photo).
J'ai aussi ce bloc de code:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
sizeHeaderToFit()
}
func sizeHeaderToFit() {
let headerView = myTable.tableHeaderView!
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var frame = headerView.frame
frame.size.height = height
headerView.frame = frame
myTable.tableHeaderView = headerView
}
Dans le storyboard
je définir la headerview en vue à l'intérieur du UITableView
:
Pouvez-vous me expliquer pourquoi la vue différer sur les deux écrans?
Pour donner une meilleure idée, voici les autres contraintes:
Carte:
et la photo de fond qui est ici:
a la contraintes suivantes:
Je suppose que le problème est avec vos images. L'écran de l'iPhone 5 est plus mince, et en fonction de la taille de vos images et de vos contraintes (et si clipSubviews est défini sur true/false), les images seront très différentes. – PeejWeej
Vous devez essayer de déboguer la hiérarchie de vues sur les différents périphériques pour vérifier les cadres/contraintes réels – PeejWeej
Il n'y a pas assez d'informations sur les noms de vos vues et autres contraintes.Donc ceci est juste une supposition: La contrainte pour vos vues hauteur (la jaune) est liée par "plus grand ou égal". Selon votre deuxième contrainte, le haut de votre vue devrait être de 644 points au-dessous du sommet des parents - c'est une valeur statique. Ainsi, sur les appareils de différentes tailles (hauteurs), votre vue sera étirée en hauteur. –