gpt4 book ai didi

ios - NSLayoutConstraints 在 Section Collapsed 时中断

转载 作者:行者123 更新时间:2023-11-28 22:19:05 25 4
gpt4 key购买 nike

我终于停止在我的应用程序中支持 iOS 5,这意味着我可以调整我所有的 NIB 以使用 NSLayoutConstraint。删除我多年来放置的所有手动布局代码真的很高兴,但我遇到了一个简单的问题,似乎应该有一个简单的答案。

这是我可以重新创建它的最简单方法:我有一个 Root View Controller 和一个 subview Controller 。 child 从 NIB 加载它的 View 。该 View 有一个 subview ,每边保持 20 pt 的边距,由 20 pt 的顶部、前导、尾随和底部实现。

Root View Controller 有一个容器 View ,可以将 subview 放入其中然后四处移动。

在 RootViewController 中:

- (void)viewDidLoad
{
[super viewDidLoad];
UIView *childView = self.childController.view;
childView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.childContainerView addSubview: childView];
}

有时我会完全折叠 subview 。在 RootViewController 中:

- (IBAction)collapseChild:(id)sender
{
// Adjust the height constraint on the container view
self.childHeightConstraint.constant = 0;
[self.view setNeedsUpdateConstraints];
}

当我这样做时,出现错误:

Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)

我预计是因为topMargin (20) + bottomMargin (20) + innerViewHeight > totalHeight (0)。当我折叠 View 时,如何让它不提示?

最佳答案

我想出了答案,并认为最好将其张贴在这里,以便它可以帮助其他人。

问题是因为所有约束都需要优先级(代码中的 UILayoutPriorityRequired 或 Interface Builder 中的 1000)。我将 Interface Builder 中的优先级降低到 999,应用程序现在知道在必须时打破该限制。

enter image description here

希望这可以帮助将来的其他人完成与我类似的迁移。

关于ios - NSLayoutConstraints 在 Section Collapsed 时中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20893363/

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