gpt4 book ai didi

ios - 更改方向的自动布局约束

转载 作者:行者123 更新时间:2023-11-28 21:28:56 24 4
gpt4 key购买 nike

我有一个应用程序,根据它是纵向还是横向(具体来说,是否高度 > 宽度),布局会有所不同。在旋转时,在 viewWillTransitionToSize:withTransitionCoordinator: 中,我适本地更新了一些自动布局约束的常量。问题是此时 View 的框架实际上还没有旋转,所以我经常在调试器中收到一条愤怒的消息,说我的约束无法满足。

我的问题是:在旋转序列中的什么点修改约束,以便 View 的框架已经改变,但我仍然在旋转的同时获得动画?

This question建议在 willAnimateRotationToInterfaceOrientation 中调用 [self.view setNeedsUpdateConstraints],但该方法现已弃用。我尝试在 viewWillTransitionToSize 中调用该方法,但仍然收到愤怒的消息。

最佳答案

我好像已经解决了。参见 this articlePureLayout .基本上:

  • 实现类似于 -(void)updateConstraintsForSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator; 的方法
  • 在这种方法中,如果您已经旋转(将状态存储在某处),请卸载所有约束并生成新约束。如果您有协调器,请安装它们并 [self.view layoutIfNeeded]在协调员的 animateAlongsideTransition block 参数。否则只需安装和布局即可。
  • 覆盖 viewDidLayoutSubviews并使用 self.view.bounds.size 调用此方法和 nil
  • 覆盖 viewWillTransitionToSize:withTransitionCoordinator:并适本地调用你的方法

关于ios - 更改方向的自动布局约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37009840/

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