在 UIView 中定位文本

Posted

技术标签:

【中文标题】在 UIView 中定位文本【英文标题】:Positioning text in UIView 【发布时间】:2016-05-18 07:43:12 【问题描述】:

我需要在 UIView 中显示一些我使用标签的文本。我正在使用 xib 文件。我需要对齐:

    在视图中水平、垂直居中标签 最大宽度。 (假设屏幕宽度为 500,我希望标签为 200。但如果屏幕宽度小于 200,则将从左视图边缘到右视图边缘。) 最大高度应为自动。如果屏幕上没有足够的文本空间应该是屏幕高度减去它和底部视图边缘之间的一些固定空间(如果可能的话,宽度也可以扩大)。标签下的按钮需要底部的空间。

可以这样做吗?我没有足够的界面构建器经验。

【问题讨论】:

【参考方案1】:

1) 为标签应用所需的自动布局并获取 3 个 NSLayoutConstraint IBOutlets 属性,它们是 1) 标签宽度 2) 标签高度 3)标签 y 原点。

2) 计算标签宽度 假设标签宽度约束名称为:lblWidthConstraint

  **CGFrame screenFrame = [UIScreen mainScreen].bounds;**

     **if(screenframe.size.width>200)
      self.lblWidthConstraint.constant = 200;
     else
       self.lblWidthConstraint.constant = screenframe.size.width-6;//
     **

3) 计算标签高度 假设标签高度约束名称为:lblHeighthConstraint

根据标签固定宽度和固定文本找到标签高度,这里应该是最大高度

CGFloat height = screenframe.size.height-2*(buttonHeight+spacing); self.lblHeighthConstraint.constant = 身高;

4)计算标签Y Orgin 假设标签 Y 原点约束名称为:lblHeighthYorigin

根据 LabelHeight 我们应该计算标签 y 原点

yOrign = screenframe.size.height-height/2; self.lblHeighthYorigin.constant = yOrign;

【讨论】:

我相信你的答案会更接近我的需要。不过,我现在将使用一些纯界面构建器方法。【参考方案2】:

使用居中对齐约束。 使用纵横比作为大小。 -> 设置纵横比高度 = 宽度的 %,最大宽度为 200 像素

使用 SizeClass 为小于 500 像素的屏幕设置另一个约束尺寸。 尽可能多地使用不同的屏幕尺寸布局。

【讨论】:

我已将标签与容器中的水平对齐,容器中的垂直对齐。添加了宽高比但没有自定义属性(我应该吗?)。标签线属性设置为 0。如果文本太长,它会离开屏幕,并且都是一行。什么粘在底部元素上?

以上是关于在 UIView 中定位文本的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 以编程方式在 UIView 中定位项目

在 UIView 中定位文本

如何在超级视图中定位 UIView?

QT中怎样读取中文文本文件!

如何使用自动布局将 UIView 定位在其他两个 UIView 的中心?

我用换行符替换所有标签`<br>`