如何用文本动态断行 UILabel?

Sam*_*ami 5 uilabel ios ios10

我有一个 UILabel,我想在这个标签中显示一些文本。我想将标签宽度最多增加设备全屏的 70%。如果该标签的文本长度不适合这 70% 的大小,则标签会自动转到与文本长度一样长的下一行。每次标签长度越过主屏幕的 70% 宽度时,线条也会中断。我已经尝试了几种方法但无法解决。请帮我解决这个问题。

提前致谢;

San*_*ari 5

将标签拖到故事板并为其添加顶部和前导约束。

现在选择标签并将控件拖动到持有标签的视图(在您的案例视图中为 ViewController),您将看到弹出窗口,然后选择相等的宽度

Xcode 故事板截图

现在你的标签的宽度等于你的视图的宽度:)这并不是你希望你的标签宽度是你的视图的 70%。因此选择标签的相等约束,转到属性检查器并将乘数更改为0.7

Xcode 故事板截图

现在您的标签宽度是您视图的 70%!

但你不希望它总是 70%。它最多可以占屏幕的 70%,因此现在将约束关系从等于更改为小于或等于。

Xcode 故事板截图

选择标签并将行数更改为 0。

就是这样:) 玩得开心:)

样本操作数:

当文本短与长时:

文本较小时的示例 - - - 文本较多时的示例

编辑:

不使用故事板?没问题;以编程方式编写相同的约束并将其应用到足够简单的标签上。如果您需要帮助,请告诉我:)

编辑:

由于您已指定要在标签中每行的开头保留间隙,因此可以通过使用边缘插入来实现

- (void)drawTextInRect:(CGRect)rect {
    UIEdgeInsets insets = {0, 5, 0, 0};
    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
Run Code Online (Sandbox Code Playgroud)