По какой-то причине, если я просто использовать код:AnimateWithDuration работает странно
[UIView animateWithDuration:.5 delay:0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
CGRect newDescriptFrame = [self.summaryTextField frame];
newDescriptFrame.size.height = (bkgndRect.size.height - kbSize.height) - ((newDescriptFrame.origin.y) + 10);
self.descriptionTextView.frame = newDescriptFrame;
}
completion:^(BOOL finished){
}];
Он перемещает descriptionTextView
просто отлично, но если добавить еще один анимационный блок наряду с этим.
[UIView animateWithDuration:.3 delay:.5
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.summaryLabel.alpha = 0.0;
self.summaryLabel.alpha = 1.0;
}
completion:^(BOOL finished){}];
descriptionTextView
возвращается в исходное положение до анимации, когда второй блок одухотворяет. Почему это происходит? Как это исправить? Если я перемещу альфа-изменения в том же блоке, что и смена кадра. Он вообще не изменяет рамки.
Это может быть проблема ограничения компоновки. Вы используете раскадровку или xib? Если это так, попробуйте отключить автоматическую компоновку (первая вкладка слева, «Инспектор файлов») и посмотрите, исправляет ли она это. – rdelmar
@rdelmar Мне нужно использовать AutoLayout, так как я использую его во всех других представлениях. Еще одна странная вещь, которая случается, если я принимаю изменение кадра из блока анимации, он все равно не изменится, если у меня есть блоки альфа-анимации. Если я прокомментирую блок альфа-анимации, кадр будет изменен .... – Alan
Иногда вы видите, где сначала изменяется, но затем, когда выполняется другой макет представления, все возвращается к их старым позициям. Если вы используете ограничения компоновки, вам не следует устанавливать фреймы. Вы должны сделать выход к любому ограничению, которое хотите изменить, и вместо этого изменить альянс. – rdelmar