如何为不同的屏幕设置自动调整大小的文本

时间:2019-03-02 12:59:13

标签: ios uilabel swift4 nslayoutconstraint autoshrink

我的任务是为不同的屏幕分辨率保留单元格中元素的大小和位置。

我做到了:

  1. 为红色和绿色块(UILabels)建立了约束 外容器。
  2. 将它们之间的约束设置为0。它的优先级高于红色块在底部和绿色在顶部的限制。
  3. 设置这些标签的行数= 0。
  4. 设置自动收缩。

结果,字体大小在不同的设备上改变。但是仍然存在一些问题:

  1. 如何删除两个标签上方和下方的太大填充物?
  2. 如何使它们均匀地调整大小? 现在,其中一个块比另一个块具有优势,这取决于要赋予更高优先级的约束。如果使它们相等-也将不起作用。

(我想通过Interface Builder进行所有操作)

1 个答案:

答案 0 :(得分:0)

您可以利用等高和等宽约束。

按照以下步骤操作,以使iPhone 8和iPhone 4s上的UILabel间距相同。这将帮助您使其成比例。

1)要实现此目的,只需选择标签(红色),标签(绿色)和超级视图(我认为您是UICollectionView的单元格)

enter image description here

2)我们对保持高度成比例感兴趣。 即红色标签(80%)和绿色标签(20%)

当前,所有高度都等于超级视图的高度,即RedLabel和Greenlabel的高度等于超级视图的100%。

但是目标是使红色和绿色标签分别达到80%和20%。

因此选择红色标签高度约束。在这里,您设置了约束条件,即“红色标签的高度应为超级视图高度的80%”。

与“绿色标签”类似,将“绿色标签的高度设置为超级视图的高度的20%”。

红色标签

enter image description here

绿色标签

enter image description here

3)现在,完成x和y轴位置约束,这很简单

a)红色标签前导=超级视图的前导

b)红色标签结尾=超级视图的结尾

c)红色标签顶部=超级视图的顶部边缘

d)红色标签底部= 不需要(因为它具有所有必要的约束条件来证明其位置是正确的,即height = 0.8 * superview,并且它是顶部对齐的,例如:super view height是100,保持该视图的顶部与height = 80对齐)

e)绿色标签行距=红色标签行距(您已经在“ a”点中对此进行了设置,无需再次设置绿色标签的约束)

f)绿色标签结尾=红色标签开头(您已经在点“ b”中设置了此标签,无需再次为绿色标签设置约束)

g)绿色标签底部=超级视图底部

h)绿色标签top = 不是必需的(因为它具有所有必要的约束条件来证明其位置是正确的,即height = 0.2 * superview,并且其底部对齐,例如:super view height是100,保持此视图的底部与height = 20对齐)

这是iPhone 8和4s的最终约束列表和情节提要预览。

enter image description here