У меня есть вид контейнера с 4 кнопками ( см. Рисунок )
Я хочу анимировать кнопки 3 и 4 (оба имеют высоту 90) и соответственно изменить вид контейнера
Так что я делаю высоту обеих кнопок равной 0, меняя ее рамку.И измените константу ограничения высоты контейнера с 200 на 100, а затем вызовите layoutIfNeeded.
Я сделал кнопку для тестирования этой дозы.
проблема в том, что происходит только одно из изменений!
- (IBAction)testButton:(UITapGestureRecognizer *)sender {
CGRect frame = button3.frame;
frame.size.height = 0;
button3.frame = frame;
CGRect frame1 = button4.frame;
frame1.size.height = 0;
button4.frame = frame1;
buttonContainerHeightConstraint.constant = 100;
[UIView animateWithDuration:0.2 animations:^{
[self.view layoutIfNeeded];
}];
когда я нажимаю кнопку тестирования, только контейнер меняет свой размер!кнопки 3 и 4 все еще находятся в одном и том же месте, но, поскольку контейнер имеет высоту 100, теперь они находятся "вне" его.только если я снова нажму на кнопку testButton только тогда, кнопки 3 и 4 исчезнут также
Я подавил ее, чтобы она выглядела так, как я, вероятно, использовал бы ее.
- (void)showButton3:(Boolean)show {
CGRect frame = button3.frame;
frame.size.height = show ? 90 : 0;
button3.frame = frame;
[UIView animateWithDuration:0.2 animations:^{
[self.view layoutIfNeeded];
}];
}
- (void)showButton4:(Boolean)show {
CGRect frame1 = button4.frame;
frame1.size.height = show ? 90 : 0;
button4.frame = frame1;
[UIView animateWithDuration:0.2 animations:^{
[self.view layoutIfNeeded];
}];
}
- (void)shrinkBtnContainer:(Boolean)shrink {
buttonContainerHeightConstraint.constant = shrink ? 100 : 200;
[UIView animateWithDuration:0.2 animations:^{
[self.view layoutIfNeeded];
}];
}
- (IBAction)testButton:(UITapGestureRecognizer *)sender {
[self showButton3:false];
[self showButton4:false];
[self shrinkBtnContainer:true];
}
, и то же самое происходитпосле того, как я нажимаю кнопку, он сначала скрывает контейнер, а если я нажимаю снова, он скрывает кнопки.Так что же я здесь не так делаю?
Примечания: * Я работаю на ios7, поэтому нет stackViews и якорей :( * Я попытался сделать это без блока анимации, и я получил тот же эффект.
РЕДАКТИРОВАТЬ * в конце я удалил ограничение высоты buttonContainer, сделал обе нижние кнопки привязанными к buttonContainer, и когда высота 2 кнопок стала равной 0 (из-за ограничения высоты, а не изменения кадра) контейнера автоматическисжимается с ними, чтобы сохранить нижнее ограничение.
Я все еще хочу знать, почему это не сработало с самого начала, хотя