Autolayout在iOS 10中没有动画效果,但在iOS 9中运行良好

时间:2016-09-27 07:25:47

标签: ios objective-c uiview autolayout ios-autolayout

- (IBAction)btnA:(id)sender {
    if(self.height.constant == 300) {
         self.height.constant = 50;
    } else {
         self.height.constant = 300;
    }

    [self.subView1 setNeedsUpdateConstraints];

    [UIView animateWithDuration:1.0 animations:^{
        [self.subView1 layoutIfNeeded];
    }];
}

我正在使用此代码,但在iOS10上它没有动画它只是跳跃增加和减少mySubview1高度。为什么呢?

相同的代码在iOS9

中正常运行

1 个答案:

答案 0 :(得分:9)

对于iOS10,它必须强制布局视图的超级视图。

//Force apply all constraints prior to the change in constant.
[self.view.superview layoutIfNeeded];

//Update constant
self.height.constant = 0;

[UIView animateWithDuration:1.0 animations:^{
    [self.view.superview layoutIfNeeded];
} 

我认为这种行为是由Xcode8-iOS10布局的变化引起的

参考文献:

https://stackoverflow.com/a/39501882

https://stackoverflow.com/a/39548367/1045672