gpt4 book ai didi

ios - 如何设置约束,以便 View 的宽度为 0(如果 View 不能至少达到某个宽度)

转载 作者:行者123 更新时间:2023-12-02 14:37:41 27 4
gpt4 key购买 nike

我正在尝试创建一个布局有些复杂的启动屏幕 Storyboard(因此没有代码)。

问题是我需要并排显示两个 View (有点像分割 View Controller )。要求如下:

  1. 左 View 的宽度应该是右 View 宽度的一半。换句话说,左 View 占据了屏幕左侧的 1/3。
  2. 左 View 的宽度不应超过 375 点。这优先于第一个约束。换句话说,左 View 应尽量占据屏幕左侧 1/3,但宽度不超过 375。
  3. 左 View 的宽度应至少为 340 点。如果由于第一个约束导致宽度小于 340,则应将其减小为 0,并且右 View 应占据屏幕的整个宽度。换句话说,如果屏幕宽度小于 1020,则只有右侧 View 可见。

所有这三个都必须应用于常规宽度尺寸类别。

我的前两个要求工作得很好。我不知道如何应用第三个要求。

这些是我目前面临的限制:

  • LeftView.top = SuperView.top
  • LeftView.bottom = SuperView.bottom
  • LeftView.leading = SuperView.leading
  • RightView.top = SuperView.top
  • RightView.bottom = SuperView.bottom
  • RightView.trailing = SuperView.trailing

它们将两个 View 固定在两侧。以下附加约束设置两个 View 的宽度以满足我的前两个要求:

  • LeftView.trailing = RightView.leading
  • LeftView.width = 0.5 * RightView.width @ 999
  • LeftView.width <= 375

完成这些后,您可以在各种 iPad 上看到结果。

在 12.9 英寸 iPad 上,您将看到左 View 占据屏幕左侧 1/3,右侧 View 占据屏幕右侧 2/3。在 12.9 英寸 iPad 横向上,左 View 最大为 375,右 View 占据屏幕的其余部分。到目前为止一切都很好。

在横向的 9.7 英寸 iPad 上,您会看到左 View 占据屏幕的左侧 1/3,右 View 占据屏幕的右侧 2/3。同样,很好。

我试图解决的问题从 9.7 英寸 iPad 的纵向开始。左 View 占据了屏幕的 1/3,但它真的很窄。它只有 256 点宽。因为这比我想要的要小最小为 340,我根本不希望左 View 出现。右 View 应该填满整个 iPad。

是否存在某种约束组合(可能具有不同的优先级),如果左 View 的宽度不能至少为 340,则可以将其强制为 0?

顺便说一句,我对紧凑宽度有不同的要求,但我已经满足了所有这些要求。这只是我需要解决的常规宽度尺寸类别中不同尺寸屏幕的最后一个要求。

最佳答案

看来我已经达到了你所需要的。在 iPad 9.7 英寸和 12.9 英寸上进行了测试,效果符合预期。虽然有点乱,但是很有效。

诀窍是使用附加 View ,如果屏幕小于 1020 点,则该 View 应为 0 点宽,否则为 1 点宽(我将其称为 OnePixelWideView )。然后让你的LeftView.width == 375 * OnePixelWideView.width @ 999 .

另一个复杂之处是它不适用于 LeftView.width = 0.5 * RightView.width @ 999 ,无论优先级如何,但我们可以通过添加一个侧面固定到 super View 的 View (我将其称为 FullscreenView )来解决这个问题,并制作 LeftView.width <= 0.33 * FullscreenView.width

这是水平约束的完整列表:

FullscreenView.leading = superview.leading
FullscreenView.trailing = superview.trailing

superview.trailing = OnePixelWideView.trailing + 1019
superview.leading = OnePixelWideView.leading @ 999
OnePixelWideView.width <= 1

LeftView.leading = superview.leading
LeftView.width <= 375
LeftView.width <= 0.33 * FullscreenView.width
LeftView.width = 375 * OnePixelWideView.width @999

RightView.leading = LeftView.trailing
RightView.trailing = superview.trailing

Here.storyboard可以玩的内容。

关于ios - 如何设置约束,以便 View 的宽度为 0(如果 View 不能至少达到某个宽度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58480318/

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