J'ai un UITableView
avec Autolayout et j'ai besoin de réduire la hauteur lorsque le GADBannerView
apparaît en bas de l'écran.
Malheureusement avec Autolayout il est impossible de modifier le cadre. La solution consiste à supprimer la mise en page automatique et à définir le cadre manuellement. C'est très dangereux car toutes mes applications fonctionnent correctement sur les écrans 3,5 'et 4,0' et la suppression de la mise en page automatique provoque une nouvelle phase de test et plus d'efforts.
Existe-t-il un moyen de changer de cadre même si la mise en page automatique est activée?
Laissez vos UITableView
contraintes à la mise en page inférieure est définie sur 0, faites un IBOutlet
. Maintenant, laissez votre GADBannerView
hauteur 40, alors changez votre outlet.constant = 40;
Pour en savoir plus sur la façon de créer IBOutlet
et de modifier sa valeur, consultez this ou this espérons que cela vous aidera.
Edit: Pour ceux qui recherchent par exemple, suivez ces étapes simples (Parce que c'est une réponse acceptée, je pense qu'il vaut la peine d'avoir un exemple. @manujmv pour cet exemple)
Créez une contrainte de hauteur pour votre vue dans votre interface.
Ajoutez ensuite un objet IBOutlet dans votre classe pour cette contrainte. Par exemple:
@property (faible, non anatomique) IBOutlet NSLayoutConstraint * heightConstraint;
Connectez cet objet dans votre panneau de connexion.
Modifiez ensuite la valeur de cette contrainte chaque fois que vous en avez besoin
self.heightConstraint.constant = 40;
Plutôt que d'essayer de modifier le cadre de la vue, ajoutez une contrainte de hauteur à l'aide de la disposition automatique et réduisez la valeur de cette contrainte. Suivez les étapes ci-dessous:
Ajoutez ensuite un objet IBOutlet dans votre classe pour cette contrainte. par exemple,
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;
Connectez cet objet dans votre panneau de connexion.
Modifiez ensuite la valeur de cette contrainte chaque fois que vous en avez besoin
self.heightConstraint.constant = 40;
Encore une chose, vous devez appeler la méthode [self.view layoutIfNeeded];
Une fois que vous avez modifié les contraintes.
Prendre plaisir :)
Vous pouvez trouver une contrainte comme ça
extension UIView {
var heightConstaint: NSLayoutConstraint? {
get {
for constraint: NSLayoutConstraint in constraints {
if constraint.firstAttribute == .height {
if constraint.relation == .equal {
return constraint
}
}
}
return nil
}
set{
setNeedsLayout()
}
}
}