gpt4 book ai didi

ios - 在 XCode 中使用 Size Class 的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 01:05:15 27 4
gpt4 key购买 nike

我开始了一个任意宽度、任意高度大小类的项目,其中一个场景有几个 UI 元素(超过 10 个)。最近我想为 Any With, Compact Height 大小类更改此场景的布局(适用于横向 iPhone)。而且我找不到合适的方法来管理它。

最后,我必须删除 Any Width、Any Height 中的所有 UI 元素,然后创建该场景所有元素的两个副本,一个用于 Any Width、Compact Height,另一个用于 Any Width, 常规高度。所以Any, Any中的场景实际上变成了一片空白。但我觉得这一定不是正确的方法。

这是一个例子:

我从任意宽度、任意高度开始,并放置了两个标签(一个在另一个之上)以填满屏幕。

任何宽度,任何高度。约束设置。

enter image description here

任意宽度、紧凑高度以及来自任意宽度、任意高度的约束

现在,对于横向的 iPhone,我想移动标签,使它们并排,所以首先,在 XCode 的底部,我更改为 wAny hCompact,然后拖动标签并调整标签大小,使它们并排在旁边。在添加其他约束之前,它看起来如下所示。

请注意,文档大纲中突出显示的约束来自任意宽度、任意高度,并且它们全部应用于任意宽度、紧凑高度。

enter image description here

任何宽度,紧凑的高度。卸载任意宽度、任意高度的约束

所以我卸载了这些约束 enter image description here

任意宽度,紧凑高度。添加了自己的约束

然后我为当前尺寸类、任意宽度、紧凑高度添加了约束 enter image description here

任意宽度、任意高度。现在没有约束,Xcode 抛出错误和警告

回到 Any Width,Any Height 尺寸类,约束没有应用,因为我卸载了它们。但如果我加回约束,任何宽度、紧凑高度都会受到影响。 enter image description here

所以我安装了最初从任意宽度、任意高度到任意宽度、常规 高度的所有约束。这将使项目运行并且屏幕将在纵向和横向上正确显示。 enter image description here

但是,在 Any Width,Any Height 中,仍然没有约束并且 XCode 会抛出警告

就像我说的,我最终删除了该场景的“任意宽度”、“任意高度”中的所有 UI 元素,然后在“任意宽度”、“紧凑高度”和“任意宽度”、“常规高度”中各创建一个版本。还必须为每个人创建 channel 和行动。

每次我想使用另一个尺寸类别时,我应该如何执行此操作,而不创建一组单独的 UI 元素(并且无需控制拖动来创建 socket 和操作)?

最佳答案

为了实现您的目标,您需要管理两组约束。

一组用于 Any,Any 类,另一组用于 Any,Compact 类。

诀窍是确保在该类中专门卸载给定大小类不需要的约束 - 我将在下面向您展示我的意思。

Any,Any 大小的约束为:

  • 标签 1

    • 到 super View 的前导空间 = 0
    • superview 的尾随空格 = 0
    • 顶部空间到顶部布局指南 = 0
    • 标签 2 = 0 的底部空间
    • 与标签 2 等高 = 0
  • 标签 2

    • 到 super View 的前导空间 = 0
    • superview 的尾随空格 = 0
    • 底部空间到底部布局指南 = 0
    • 顶部空间到标签 1 = 0
    • 与标签 1 等高 = 0

您的标签 1 约束应如下所示,您的标签 2 约束应类似:

Label 1 constraints

现在,选择 Any,Compact 类并调整两个标签的位置并添加以下约束:

  • 标签 1

    • 底部空间到底部布局指南 = 0
    • label2 的后缘到前缘 = 0
    • 与标签 2 等宽
  • 标签 2

    • 顶部空间到顶部布局指南 = 0
    • label1 的前缘到后缘 = 0
    • 与标签 1 等宽

现在,通过双击约束关闭 Any,Compact 中不必要的约束,单击“+”添加 Any,Compact 然后清除复选框,这样它看起来像这样:

enter image description here

Any,Compact 的不必要约束是:

  • 标签 1

    • super View 的尾随空格
    • 标签 2 的底部空间
    • 与标签 2 等高
  • 标签 2

    • 领先空间到superview
    • 标签 1 的顶部空间
    • 与标签 1 等高

现在,回到Any,Any 类并以同样的方式关闭Any,Any 不必要的约束

enter image description here

Any,Any 的不必要约束是:

  • 标签 1

    • 尾随空格标签 2
    • 底部空间到底部布局指南
    • 与标签 2 等宽
  • 标签 2

    • 标签 1 的前导空格
    • 顶部空间到顶部布局指南
    • 与标签 1 等宽

现在,您应该能够在 Any,AnyAny, Compact 之间切换,并将标签移动到正确的位置。

我在这里上传了一个带有适当约束的 Storyboard:https://gist.github.com/paulw11/f1b0faa229b152f1c53dadefcf9e0885

更新:我刚刚注意到您的标签之间的空间不是 0,但您可以根据需要调整前导/尾随和顶部/底部约束。

关于ios - 在 XCode 中使用 Size Class 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36487116/

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