gpt4 book ai didi

ios - 检查是否已应用 NSLayoutConstraint

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:26 26 4
gpt4 key购买 nike

我有一个 UITextView 子类,它有一个优先级为 500 的高度约束。它插入的 View 中的所有其他约束都有 1000 优先级,因此当不能满足约束时,这个约束就会被删除。

我希望能够验证它是否被丢弃,以便在这种情况下启用滚动。

我试过这样验证:

- (void)updateConstraints
{
CGSize size = [self sizeThatFits:CGSizeMake(self.bounds.size.width, FLT_MAX)];

if (!heightConstraint) {
heightConstraint = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:1.0f constant:size.height];
heightConstraint.priority=500;
[self addConstraint:heightConstraint];
}
else heightConstraint.constant=size.height;
[super updateConstraints];

if (self.bounds.size.height!=heightConstraint.constant) {
self.scrollEnabled=YES;
}





}

谢谢。

最佳答案

这是我对布局调用/回调顺序的看法:

  • [self.view layoutIfNeeded] <-- 立即计算/应用约束
  • [self.view setNeedsUpdateConstraints] <-- 自下而上,测量/计算;调用 updateConstraints
  • [self.view setNeedsLayout] <-- 自上而下,应用约束解决方案
  • [self.view setNeedsDisplay] <-- 自上而下,渲染到屏幕

听起来你想在你的 View 上实现 - (void)updateConstraints,并在那里添加你的日志记录和调试。确保调用 [super updateConstraints],否则你会遇到麻烦。到该方法退出时,您的约束已经计算完毕。

关于ios - 检查是否已应用 NSLayoutConstraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23058770/

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