gpt4 book ai didi

ios - 具有多标签的 UITableViewCell AutoLayout

转载 作者:技术小花猫 更新时间:2023-10-29 11:09:02 27 4
gpt4 key购买 nike

我正在尝试在 UITableViewCell 中使用 AutoLayout 和带有百分比计算的多个标签。我想要标签之间的间距相等但宽度不同。如下图所示,纵向和横向模式的宽度和间距也会有所不同。

Protrait Display

Landscape Display

我希望纵向空间为 4,横向空间为 8。

纵向标签 1 宽度 - 50%标签 2 宽度 - 20%Label3 宽度 - 30%

横向标签 1 宽度 - 50%标签 2 宽度 - 15%Label3 宽度 - 20%Label4 宽度 - 15%

我使用了水平间距和顶部和底部约束,但它没有导致适当的宽度和空间对齐。此外,第一行是标题,因此它不应该有披露指示符,其余行应该有它。任何帮助,将不胜感激。

注意:它是一个通用应用程序,我在 iPad 中使用 splitview。在纵向模式下,它应该像 iPhone 一样显示 3 个标签,而在横向模式下,它应该显示 4 个标签,如上所述。我的主视图 Controller 也始终可见。

最佳答案

由于尺寸等级不区分纵向 iPad 和横向 iPad,因此您不能使用尺寸等级。您可以做的是在您的 xib 中定义所有所需的约束,如下所示

  1. 定义标签之间空间的约束,并在您的 View 类中为其创建 IBOutlet,我们将其命名为“gapConstraint”。

  2. 定义每个标签的宽度约束,这将与父 View 的宽度成比例,例如对于更大的标签约束将是 biggerlabel.width = superView.width*0.5。

  3. 对于在纵向和横向方向上需要不同宽度的标签,定义两个宽度约束(每个方向一个)并将一个约束的优先级设置为 750(高 - 比如说纵向),另一个为500(低 - 让我们说风景)。为所有这些约束创建导出。我们需要为每个标签定义两个宽度约束(一个用于纵向,一个用于横向),因为 NSLayoutConstraint 的乘数属性是只读的,因此一旦分配了乘数,我们就不能更改它的值。为解决此问题,我们定义了两个约束,并且在基于方向的代码中,我们将通过更改优先级来激活更合适的约束。

覆盖 UpdateConstraints 方法,在此方法中您可以检查当前设备方向。如果设备方向是纵向,则将 gapConstraint 的(在 point1 中创建的)常量值更改为 4,而在横向中,将 gapConstraint 的(在 point1 中创建的)常量值更改为 8。对于标签宽度;在纵向中,将纵向宽度约束的优先级更改为 750,并将横向宽度约束的优先级降低到 500,而在横向中,将纵向宽度约束的优先级更改为 500,同时将横向宽度约束的优先级提高到 750。

关于ios - 具有多标签的 UITableViewCell AutoLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31199848/

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