我想在设备旋转时修改布局约束.
它确实有效,在willAnimateRotationToInterfaceOrientation
年,我移除了所需的约束,并用其他约束替换它们,以获得正确的布局...
但也有问题,在旋转过程中,自动布局在调用willAnimateRotationToInterfaceOrientation
之前就开始打破约束,所以当设备重新定向时,我们应该在哪里替换约束呢?
另一个问题是性能,经过几次旋转后,系统不再打破限制,但我的性能大幅下降,尤其是在纵向模式下...
我想在设备旋转时修改布局约束.
它确实有效,在willAnimateRotationToInterfaceOrientation
年,我移除了所需的约束,并用其他约束替换它们,以获得正确的布局...
但也有问题,在旋转过程中,自动布局在调用willAnimateRotationToInterfaceOrientation
之前就开始打破约束,所以当设备重新定向时,我们应该在哪里替换约束呢?
另一个问题是性能,经过几次旋转后,系统不再打破限制,但我的性能大幅下降,尤其是在纵向模式下...
在willRotateToInterfaceOrientation:duration:
中,将setNeedsUpdateConstraints
发送到任何需要修改其约束的视图.
或者,创建一个UIView
子类.在你的子类中,注册接收UIApplicationWillChangeStatusBarOrientationNotification
.当你收到通知时,给自己发setNeedsUpdateConstraints
.
这将在视图上设置needsUpdateConstraints
标志.在系统执行布局(通过发送layoutSubviews
条消息)之前,它会向设置了needsUpdateConstraints
标志的任何视图发送updateConstraints
条消息.这是您应该修改约束的地方.创建UIView
子类并覆盖updateConstraints
以更新约束.