见下图,为什么两个标签(棕色)的组合高度与标签的高度(红色)不同?

问题描述 投票:0回答:1

我只是把原来的字符串\nfoo\n\nbar\n\nfoo\n\nbar\n切成两个不同的字符串\nfoo\n\nbar\n\nfoo\n\nbar\n。剪切的字符串将被设置为其专用标签。我期待两个标签的组合高度与具有原始字符串的标签的组合高度相同。你能指导我解释一下吗?有没有办法使组合的两个标签与一个标签相同而不添加/删除剪切字符串中的字符?

enter image description here

操场

import PlaygroundSupport
import Foundation
import UIKit

PlaygroundPage.current.needsIndefiniteExecution = true

let viewWidth: CGFloat = 100.0

func createLabel(_ text: String, _ backgroundColor: UIColor = .white) -> UILabel {
    let label = UILabel()
    label.text = text
    label.numberOfLines = 0
    label.backgroundColor = backgroundColor
    label.textColor = .black
    label.sizeToFit()
    label.frame.size.width = viewWidth
    return label
}

let view = UIView(frame: CGRect(x: 0, y: 0, width: viewWidth, height: 1000))
view.backgroundColor = .white

let label1 = createLabel("\nfoo\n\nbar\n", .green)
let label2 = createLabel("\nfoo\n\nbar\n", .blue)
let label3 = createLabel("\nfoo\n\nbar\n\nfoo\n\nbar\n", .red)
let label4 = createLabel("\nfoo\n\nbar\n", .brown)
let label5 = createLabel("\nfoo\n\nbar\n", .brown)
label2.frame.origin.y = label1.frame.maxY
label3.frame.origin.y = label2.frame.maxY
label4.frame.origin.y = label3.frame.maxY
label5.frame.origin.y = label4.frame.maxY

view.addSubview(label1)
view.addSubview(label2)
view.addSubview(label3)
view.addSubview(label4)
view.addSubview(label5)

PlaygroundPage.current.liveView = view

/*
\nfoo\n\nbar\n
\nfoo\n\nbar\n
*/

ios swift string uilabel
1个回答
0
投票

当你以这种方式组合label4和label5时,你有三条新线,

label4应该是let label4 = createLabel("\nfoo\n\nbar", .brown)

最后删除\n

© www.soinside.com 2019 - 2024. All rights reserved.