UIView des modifications animées avec des contraintes de mise en forme automatique

Dire que j'ai un projet qui se présente comme suit:

UIView des modifications animées avec des contraintes de mise en forme automatique

Il y a deux UIViews appelée yellowBox et l'autre appelé redBox. La mise en page automatique des contraintes imposent que le yellowBox est de 60 points à partir du haut de la superview avec 350 points d'attaque et de fuite des espaces (c'est à dire à gauche et à droite de la vue). Le redBox a la même attaque et de fuite des contraintes d'espace. Il y a un espace vertical de contrainte entre les deux cases de 0 pour indiquer que le bas de la yellowBox doit toujours être directement sur le dessus de la redBox.

Lorsque l'utilisateur appuie sur l'expansion de la Boîte Jaune bouton, je voudrais que la hauteur de la yellowBox à augmenter et, en conséquence, la redBox se déplace vers le bas afin de continuer à satisfaire l'espace vertical contrainte (que l' yellowBox est toujours sur le dessus de la redBox). Voici le code d'animation:

- (IBAction)expandYellowBox:(id)sender {

    [UIView animateWithDuration:0.5
                     animations:^{
                         CGRect newFrame = self.yellowBox.frame;
                         newFrame.size.height += 50;
                         self.yellowBox.frame = newFrame;
                     }];

}

Cependant, j'ai été incapable de le faire fonctionner correctement. Comme vous pouvez le voir par l'icône rouge, il y a un problème avec les contraintes du moment:

UIView des modifications animées avec des contraintes de mise en forme automatique

ce qui est assez juste, car il n'y a aucun moyen pour la mise en page automatique de connaître la hauteur des cases. Cependant, je ne sais pas comment résoudre ce problème de telle manière qu'il permette pour les cases à être redimensionnée et déplacée. Par exemple, si je spécifier une hauteur de contrainte sur les yellowBox alors qui va l'empêcher d'être redimensionnée. Si je définis la hauteur de la contrainte supérieure ou égale (pour permettre à la yellowBox hauteur d'augmenter), puis-je obtenir une contrainte différente d'erreur:

UIView des modifications animées avec des contraintes de mise en forme automatique

Toutes les contraintes ont été établies à l'aide de Xcode dans le storyboard - aucun n'a été écrit dans le code.

Toute aide grandement appréciée.


EDIT: Comme il s'avère, la yellowBox est croissante lorsque le bouton est cliqué - c'est juste que je ne pouvais pas le dire, car il apparaît derrière le redBox. J'ai remarqué seulement après avoir cliqué, environ quatre fois et il a commencé à apparaître au bas de la redBox. Cependant, la même question demeure: comment obtenir les redBox de toujours coller au fond de la yellowBox.

  • u peut vérifier si viewDidLayoutSubViews méthode appelée dans ur viewController? Lorsque vous effectuez cliquez sur l'événement.
  • Non, le viewDidLayoutSubViews méthode n'est pas appelée.
  • essayez de définir la limite au lieu de la vue peut travailler quelques temps. même les reprises de soi.yellowBox.frame = newFrame; deux fois dans u code peut également fixer quelques fois
  • Cela ne semble pas fonctionner, en plus de la répétition du code plusieurs fois (jusqu'à ce qu'il faut) ne semble pas être la meilleure solution au problème...
  • vérifier ma réponse et de démonstration. cela aidera à
InformationsquelleAutor Skoota | 2014-01-09