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

标签 ios uilabel swift4 nslayoutconstraint autoshrink

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

我做到了:

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

因此,字体大小在不同设备上会发生变化。但仍然存在一些问题:

  1. 如何删除两个标签上方和下方过大的内边距?
  2. 如何使它们均匀地调整大小? 现在,其中一个 block 比另一个 block 具有优势,具体取决于哪些约束可以设置更高的优先级。如果你让它们相等 - 它也不起作用。

(我想通过 Interface Builder 完成所有工作)

最佳答案

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

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

1)要实现此目的,只需选择您的标签(红色)、标签(绿色)和 super View (我认为您是 UICollectionView 的一个单元格)

enter image description here

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

目前,所有高度都等于 super View 高度,即 RedLabel 和 Greenlabel 的高度等于 super View 的 100%。

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

因此选择红色标签高度约束。在这里您设置了约束,即“红色标签的高度应该是 super View 高度的 80%”。

与绿色标签类似,设置“绿色标签的高度,使其为 super View 高度的 20%”。

红色标签

enter image description here

绿色标签

enter image description here

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

a) 红色标签Leading = super View 的前沿

b) 红色标签Trailing = super View 的后缘

c) 红色标签顶部 = super View 的顶部边缘

d) 红色标签底部 = 不需要(因为它具有证明其位置合理所需的所有约束,即高度 = 0.8 * superview 并且它是顶部对齐的,例如:super view 高度为 100 ,保持此 View 顶部与 height = 80 对齐)

e) 绿色标签领先 = 红色标签领先(您已经在点“a”中设置了此项,无需再次为绿色标签设置约束)

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

g) 绿色标签底部 = super View 底部

h) 绿色标签 top = 不需要 (因为它具有证明其位置合理所需的所有约束,即高度 = 0.2 * superview 并且它是底部对齐的,例如:super view 高度为 100 ,保持此 View 底部与 height = 20 对齐)

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

enter image description here

关于ios - 如何为不同屏幕设置自动调整文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54958775/

相关文章:

swift 4 - HMCharacteristicTypeSerialNumber 弃用

arrays - 在数组中存储数据的问题 - Swift

iphone - 类中两个独立的委托(delegate)方法

ios - TestFlight 无法安装应用程序并且无法删除部分安装的应用程序

iphone - 如何更改 iOS 中模板实用程序应用程序中的翻转动画

ios - 在单行 UILabel 旁边居中 NSTextAttachment 图像

ios - NSLineBreakByWordWrapping中断哪些字符?

android - Android 和 iOS 之间的套接字数据问题

fonts - Xcode 5是否可以在 Storyboard 上更改字体和大小?

ios - Swift 4 使用 KVO 监听音量变化