2017-01-19 1 views
1

J'essaie d'apprendre l'autolayout mais je suis bloqué à un point.Application de Autolayout sur UILabels dans Xcode 7.3

C'est ce que je veux réaliser, j'ai une cellule tableView personnalisée dans laquelle j'ai un imageView et 3 étiquettes et un bouton.

enter image description here

J'ai essayé de changer leur priorité de résistance à la compression et la priorité étreignant mais a échoué. Alors quelqu'un peut-il me guider s'il vous plaît comment puis-je faire cela?

Répondre

0

Si vous modifiez la taille de vos étiquettes (numberOfLines! = 0), elles s'affichent automatiquement ... si le contenu du texte ne correspond pas.

Pour construire votre présentation de vue, regardez le nouveau (depuis iOS 9) UIStackView qui permet d'empiler des vues et de gérer leur mise en page automatique.

Une approche possible à votre exigence est d'avoir les trois étiquettes à l'intérieur d'un UIStackView. Utilisez ensuite les contraintes de disposition automatique pour organiser l'UIStackView, les boutons et l'image. L'un de vos contraintes doivent faire l'UIStackView une largeur fixe et/ou de la hauteur afin que vous puissiez contrôler la taille de vos étiquettes:

En utilisant un langage visuel: H: [myStackView (== 280)] ou

theView.addConstraint(NSLayoutConstraint(item: myStackView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.width, multiplier: 1, constant: 280)) 

est ici un exemple de code pour créer un UIStackView programme et le lien vers la documentation d'Apple: https://developer.apple.com/reference/uikit/uistackview

l'exemple de code a deux étiquettes empilées horizontalement, centrées et de taille égale, séparés par 40. Vous souhaitez empiler vos étiquettes verticalement.

let stackView = UIStackView(arrangedSubviews: [negativeResponseButton, positiveResponseButton]) 
stackView.axis = .horizontal 
stackView.distribution = .fillEqually 
stackView.alignment = .center 
stackView.spacing = 40