UILabel 文本对齐不起作用(Swift 4)

Posted

技术标签:

【中文标题】UILabel 文本对齐不起作用(Swift 4)【英文标题】:UILabel text alignment not working (Swift 4) 【发布时间】:2018-06-20 06:52:19 【问题描述】:

我正在尝试对齐 UILabel 中的文本,但它不起作用。文本打印时标签的第二行紧贴标签的左侧。如何使两条线在标签的中心对齐?谢谢。

let bioTextView: UILabel = 
    let tv = UILabel()
    tv.text = "This is sample text for a bio label for a user on this platform."
    tv.backgroundColor = .clear
    tv.textColor = .white
    tv.lineBreakMode = .byWordWrapping
    tv.numberOfLines = 0
    tv.textAlignment = NSTextAlignment.right
    return tv
()

请查看以下屏幕截图以了解该问题。我的要求是使文本适合拖线。

【问题讨论】:

使用 tv.textAlignment = .justified 抱歉,这仍然导致第二行紧贴标签的左侧 :( 不过谢谢 @ethan-wilk :测试了您的代码,文本似乎与 value .center 完全对齐,您面临的问题是什么?添加截图进一步说明 通过将textAlignment值改为.center,就必须实现输出。如果您仍然遇到问题,我们将非常感谢您提供屏幕截图。 @KeyurTailor 这是问题的图片:imgur.com/a/crcX9Ah 也许是锚定问题? 【参考方案1】:

将视图添加为子视图后尝试设置对齐方式。

view.addSubview(self.bioTextView)
bioTextView.textAlignment = .center

【讨论】:

【参考方案2】:

试试这个:

let bioTextView: UILabel = 
    let tv = UILabel()
    tv.backgroundColor = .clear
    tv.textColor = .white
    tv.lineBreakMode = .byWordWrapping
    tv.numberOfLines = 0

    let textString = NSMutableAttributedString(
            string: "This is sample text for a bio label for a user on this platform.",
            attributes: [:])
    let textRange = NSRange(location: 0, length: textString.length)
        let paragraphStyle = NSMutableParagraphStyle()

    paragraphStyle.alignment = .center
    textString.addAttribute(NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: textRange)
    tv.attributedText = textString

    return tv
()

【讨论】:

【参考方案3】:

如果有人在使用 UIStackView 并遇到此问题:stackView.alignment 可能会破坏 label.textAlignment 属性。只需删除stackView.alignment

【讨论】:

【参考方案4】:

更新以下代码行将解决您的问题:

tv.textAlignment = .center

这将使您的标签文本居中对齐。

【讨论】:

抱歉,这仍然导致第二行紧贴标签的左侧 :( 不过谢谢 检查一次你的标签框 @Anbu.karthik,说对了,看看你的标签框。你可以发布相同的图片吗? @SagarChauhan 这是问题的图片:imgur.com/a/crcX9Ah 也许是锚定问题? 你在使用任何自定义类的 UILabel 吗?

以上是关于UILabel 文本对齐不起作用(Swift 4)的主要内容,如果未能解决你的问题,请参考以下文章

为啥在尝试垂直对齐我的 UILabel 时 sizeToFit 不起作用?它只是停留在中心

在 UILabel 中覆盖“文本”在 iOS 6 中不起作用

尝试根据文本长度使用 UILabel 移动图像,约束不起作用

UILabel NSTextAlignmentRight 不起作用?

如何在 UITableViewCell 中左对齐或右对齐 UILabel

当基本字符串包含双引号时,仅针对 Swift 中 UILabel 的特定范围的点击手势不起作用