Je n'ai jamais travaillé avec autolayout contraintes avant. J'ai une nouvelle petite application sur laquelle je travaille et j'ai remarqué que les vues du NIB sont par défaut en autolayout. Je me suis donc dit que j'allais profiter de l'occasion pour travailler sur les contraintes. avec et essayer de comprendre où Apple veut en venir.
Premier défi :
Je dois redimensionner un MKMapView et j'aimerais l'animer vers la nouvelle position. Si je fais cela de la façon dont j'ai l'habitude de le faire :
[UIView animateWithDuration:1.2f
animations:^{
CGRect theFrame = worldView.frame;
CGRect newFrame = CGRectMake(theFrame.origin.x, theFrame.origin.y, theFrame.size.width, theFrame.size.height - 170);
worldView.frame = newFrame;
}];
...alors le MKMapView reviendra à sa hauteur initiale dès qu'une vue sœur sera mise à jour (dans mon cas, le titre d'un UISegmentedControl est mis à jour). [myUISegmentedControl setTitle:newTitle forSegmentAtIndex:0]
).
Donc, ce que je pensez à Je veux modifier les contraintes de la MKMapView, qui ne sont plus égales à la hauteur de la vue parente, mais relatives au haut de l'UISegmentedControl qu'elle utilise. était couvrant : V:[MKMapView]-(16)-[UISegmentedControl]
Ce que je veux, c'est que la hauteur du MKMapView soit réduite afin que certains contrôles sous la vue de la carte soient révélés. Pour ce faire, je pensez à J'ai besoin de changer la contrainte d'une vue fixe en taille réelle à une vue où le bas est contraint au haut d'un UISegmentedControl... et j'aimerais que cela s'anime lorsque la vue se réduit à la nouvelle taille.
Comment s'y prendre ?
Editer - cette animation est no animer bien que le bas de la vue se déplace vers le haut 170 instantanément :
[UIView animateWithDuration:1.2f
animations:^{
self.nibMapViewConstraint.constant = -170;
}];
et le nibMapViewConstraint
est câblé en IB à la contrainte d'espace vertical inférieure.