自动换行在UILabel中不一致

时间:2018-03-02 00:02:23

标签: ios swift uilabel word-wrap

我有一个UILabel,当文本的CGSize的宽度大于标签的宽度时,它被设计为在高度上扩展。我用这段代码实现了这个目标:

func viewHeight(_ locationName: String) -> CGFloat {

    let locationName = tappedLocation[0].name

    var size = CGSize()

    if let font = UIFont(name: ".SFUIText", size: 17.0) {
        let fontAttributes = [NSAttributedStringKey.font: font]
        size = (locationName as NSString).size(withAttributes: fontAttributes)
    }

    let normalCellHeight = horizontalStackViewHeightConstraint.constant
    let extraLargeCellHeight = horizontalStackViewHeightConstraint.constant + 20.33

    let textWidth = ceil(size.width)
    let cellWidth = ceil(nameLabel.frame.width)

    if textWidth > cellWidth {
        return extraLargeCellHeight
    } else {
        return normalCellHeight
    }
}

行= 0和换行符样式=自动换行:

enter image description here

标签位于垂直stackView内部,并且被限制在其顶部,前端和后端以及其下方的stackView。当文本的CGSize宽度比标签的宽度长时,标签和UIView的高度适当地扩展。一切都很好。

然而,这些词并不总是包装。这种行为是故意的:

Bobby Mao的中国厨房&酒吧: XL细胞。宽度:184.0, 文字宽度:287.0

enter image description here

这种行为不是(为什么前一行不是“牛排”?):

露丝的克里斯牛排馆: XL细胞。宽度:184.0, 文字宽度:204.0

enter image description here

这也不是(如果Gina超过标签宽度参数,为什么不包装?):

Ristorante Mamma Gina: XL细胞。宽度:184.0, 文字宽度:191.0

enter image description here

我还在标签上设置了临时背景颜色,以确保它确实符合预期的宽度。此示例中的标签在超出标签宽度时创建另一行,但文本未换行:

enter image description here

我已经阅读了Stack Overflow关于自动换行的其他条目。我不相信这是重复的。我为我的文字创建两行没有问题。我没有发生自动换行的麻烦。我发现 时遇到了问题。

我认为意图很明确......我错过了什么?

0 个答案:

没有答案