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

问题描述 投票:0回答:1

我的任务是保留单元格内元素的大小和位置,以适应不同的屏幕分辨率。

我做了:

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

结果,字体大小在不同设备上发生变化。但仍有一些问题:

  1. 如何删除两个标签上方和下方过大的填充?
  2. 如何使它们均匀调整大小?现在,其中一个块优先于另一个块,具体取决于什么约束来提高优先级。如果你使它们相等 - 它也不起作用。

(我想通过Interface Builder做一切)

ios uilabel swift4 nslayoutconstraint autoshrink
1个回答
0
投票

您可以利用相同的高度和相等的宽度约束。

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

1)要实现这一点,只需选择,你的标签(红色),标签(绿色)和超级视图(我认为你是它的UICollectionView单元格)

enter image description here

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

目前,所有高度都等于超视图高度,即红色标签和绿色标签的高度等于超视图的100%。

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

因此,选择红色标签高度约束。在这里设置约束,其中说“红色标签的高度应该是超视图高度的80%”。

类似地,对于绿色标签,设置“绿色标签的高度,使其超视图高度为20%”。

红标

enter image description here

绿色标签

enter image description here

3)现在完成x轴和y轴位置约束,这将是直接的

a)红色标签领先=超级视图的前沿

b)红色标签尾随=超视图的后沿

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

d)红色标签底部=不需要(因为它具有所有必需的约束来证明它的位置,即高度= 0.8 *超视图并且它是顶部对齐的,例如:超视图高度为100,保持此视图顶部与高度对齐= 80)

e)绿色标签前导=红色标签前导(您已将此设置为“a”,无需再为绿色标签设置约束)

f)绿色标签尾随=红色标签前导(您已将此设置为“b”,无需再次为绿色标签设置约束)

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

h)绿色标签顶部=不需要(因为它具有所有必需的约束来证明它的位置,即高度= 0.2 *超视图并且它是底部对齐的,例如:超视图高度为100,保持此视图底部与高度对齐= 20)

这是iPhone 8和4s的最终约束列表和故事板预览。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.