如何在 iOS 中仅缩进多行 UILabel 的第一行?

Posted

技术标签:

【中文标题】如何在 iOS 中仅缩进多行 UILabel 的第一行?【英文标题】:How Can I indent only first line of multiline UILabel in iOS? 【发布时间】:2014-01-29 12:08:17 【问题描述】:

我想在 UILabel 的开头添加一个图像。标签是多行的。如果我使用 contentInset,它会缩进整个标签,但我只想缩进第一行。

到目前为止我已经尝试过了,这对我不起作用。

    UIEdgeInsets titleInsets = UIEdgeInsetsMake(0.0, 40.0, 0.0, 0.0);
    valueLabel.contentInset = titleInsets;

它应该看起来像这样。

【问题讨论】:

【参考方案1】:

@DavidCaunt 的建议对我有用。我在这里分享代码。

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.firstLineHeadIndent = 50;

[attributedText addAttribute:NSParagraphStyleAttributeName value:style range:range];

[valueLabel setAttributedText:attributedText];

【讨论】:

我知道这是正确的方法,但您是否尝试过使用自定义字体。对我来说它不起作用。【参考方案2】:

正如用户 716216 指出的那样,另外 - 我们可以使用具有定义缩进值的制表符:

NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.headIndent = 50;

label.attributedText = [[NSAttributedString alloc] initWithString:
    @"\tHow can i add image like this in start of UILabel? Label is multiline.........."
    attributes:@NSParagraphStyleAttributeName: paragraphStyle];

【讨论】:

我不得不在一个 UILabel 中缩进 2 行,所以我使用了:paragraphStyle.firstLineHeadIndent = 7;段落样式.headIndent = 7;【参考方案3】:

您可以在 Interface Builder 中执行此操作:

【讨论】:

以上是关于如何在 iOS 中仅缩进多行 UILabel 的第一行?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:UILabel 之后的 UIImageView 与多行

如何在通知内容扩展中使用多行 UILabel / 自动布局调试布局

iOS:动态添加多行 UILabel

iOS:多行 uilabel 仅显示带有自动布局的一行

如何在 uilabel 中使用多行并根据 Swift 中的标签高度自动扩展 uitableview 行高?

iOS 9 上的静态 UITableViewCell 中的多行 UILabel