gpt4 book ai didi

ios - 灵活的宽度约束

转载 作者:行者123 更新时间:2023-11-29 10:33:06 24 4
gpt4 key购买 nike

我在解决约束方面遇到了困难,也许有人可以提供帮助:

情况是这样的:

我需要 myView 根据 superview 宽度灵活调整宽度。

如果 superview 的宽度大于 500 -> myView 应该有 500。

如果 superview 的宽度较小,则 500 -> myView 应该占用所有 superView 宽度。

[NSLayoutConstraint constraintsWithVisualFormat:@"[myView(==500)]" options:0 metrics:nil views:@{
@"myView" : self.myView,
@"superview" : superview
}];
// If I write myView(<=500), obviously width will be zero.
// I can not add something like this:
// @[tableView(<=superview)]", as width can be less, can be more

所以我被困在这里,有什么想法吗?

提前致谢!

最佳答案

即使按照自动布局标准,视觉格式语言也可能有点不稳定,尤其是在设置优先级时。这个问题实际上是概念性的,可以在 IB 或 VFL 或类方法中完成。无论如何,问题:

如果您希望某些行为在满足或不满足某些条件时以固定方式发生变化,请尝试切换到优先级而不是不等式。在这种情况下,请考虑边距:当总宽度低于 500 时,您希望水平边距为 0,但当总宽度超过 500 时,则添加空格。您需要的约束条件:

  1. 要求优先级 1000:将 myView 设置为小于或等于 500。
  2. 优先级 999:设置 myView 附加到 superview,前导/尾随空格=0。

如果空间小于500,两个条件都可以满足。如果空间超过 500,那么它将开始打破约束,从最低优先级开始。

请注意,在打破边距约束后,它将不知道在哪里设置 myView 的水平 x 位置,因此您将需要另一个约束。在 superview 中居中将冲突最少,因为它可以水平放置它,有或没有边距约束被打破。有一种方法可以让它只在一侧增加空间,但这是一种复杂的打破约束的舞蹈,导致需要进行困惑的程序干预;我认为水平居中可以实现您的预​​期行为。

关于ios - 灵活的宽度约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28545350/

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