J'ai un UIView
et j'ai défini les contraintes à l'aide de Xcode Interface Builder.
Maintenant, je dois mettre à jour cette UIView's
constante de hauteur par programme.
Il y a une fonction qui va comme myUIView.updateConstraints()
, mais je ne sais pas comment l'utiliser.
swift
xcode
autolayout
nslayoutconstraint
ios-autolayout
Chris Mikkelsen
la source
la source
Réponses:
Sélectionnez la contrainte de hauteur dans le générateur d'interface et prenez-en une sortie. Ainsi, lorsque vous souhaitez modifier la hauteur de la vue, vous pouvez utiliser le code ci-dessous.
La méthode
updateConstraints()
est une méthode d'instance deUIView
. Il est utile lorsque vous définissez les contraintes par programme. Il met à jour les contraintes de la vue. Pour plus de détails, cliquez ici .la source
Si vous avez une vue avec plusieurs contraintes, un moyen beaucoup plus simple sans avoir à créer plusieurs points de vente serait:
Dans le constructeur d'interface, donnez à chaque contrainte que vous souhaitez modifier un identifiant:
Ensuite, dans le code, vous pouvez modifier plusieurs contraintes comme ceci:
Vous pouvez donner à plusieurs contraintes le même identifiant, vous permettant ainsi de regrouper les contraintes et de les modifier toutes en même temps.
la source
Changer
HeightConstraint
etWidthConstraint
sans créerIBOutlet
.Remarque: attribuez une contrainte de hauteur ou de largeur dans le fichier Storyboard ou XIB. après avoir récupéré cette contrainte à l'aide de cette extension.
Vous pouvez utiliser cette extension pour récupérer une contrainte de hauteur et de largeur:
Vous pouvez utiliser:
la source
first(where: ...)
vous pouvez utiliser immédiatement au lieu defilter
+first
Faites glisser la contrainte dans votre VC en tant qu'IBOutlet. Ensuite, vous pouvez modifier sa valeur associée (et d'autres propriétés; consultez la documentation):
la source
la source
Si la méthode ci-dessus ne fonctionne pas, assurez-vous de la mettre à jour dans le bloc Dispatch.main.async {}. Vous n'avez pas besoin d'appeler la méthode layoutIfNeeded () alors.
la source
Connectez d'abord la contrainte de hauteur à notre viewcontroller pour créer IBOutlet comme le code ci-dessous
puis mettez le code ci-dessous en vue a chargé ou à l'intérieur des actions
si c'est à l'intérieur d'un bouton cliquez
la source
Pour mettre à jour une contrainte de mise en page, il vous suffit de mettre à jour la propriété constante et d'appeler layoutIfNeeded après.
la source
la source