gpt4 book ai didi

objective-c - iOS 在设备旋转时更改自动布局约束

转载 作者:IT老高 更新时间:2023-10-28 11:38:39 27 4
gpt4 key购买 nike

我想在设备旋转时修改布局约束。我的 UIViewController 由 2 个 UIViews 组成,横向对齐,在纵向中,它们是垂直对齐的。

它确实有效,在 willAnimateRotationToInterfaceOrientation 中,我删除了所需的约束并用其他约束替换它们以获得正确的布局...

但是有问题,在旋转期间,自动布局在调用 willAnimateRotationToInterfaceOrientation 之前开始打破约束,那么当设备重新定向发生时,我们打算在哪里替换我们的约束?

另一个问题是性能,经过几次旋转后,系统不再打破限制,但我的性能下降很大,尤其是在纵向模式下...

最佳答案

willRotateToInterfaceOrientation:duration: 中,将 setNeedsUpdateConstraints 发送到任何需要修改其约束的 View 。

或者,创建一个 UIView 子类。在您的子类中,注册以接收 UIApplicationWillChangeStatusBarOrientationNotification。当您收到通知时,向自己发送 setNeedsUpdateConstraints

这会在 View 上设置 needsUpdateConstraints 标志。在系统执行布局之前(通过发送 layoutSubviews 消息),它会向任何设置了 needsUpdateConstraints 标志的 View 发送 updateConstraints 消息。这是您应该修改约束的地方。创建一个 UIView 子类并覆盖 updateConstraints 以更新您的约束。

关于objective-c - iOS 在设备旋转时更改自动布局约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13739902/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com