ios - 见下图,为什么两个标签(棕色)的组合高度与标签(红色)的高度不同?
问题描述
我只是将原始字符串\nfoo\n\nbar\n\nfoo\n\nbar\n
切割成两个不同的字符串\nfoo\n\nbar\n
和\nfoo\n\nbar\n
. 剪切的字符串将被设置到其专用标签中。我期待两个标签的组合高度与具有原始字符串的标签相同。你能指导我解释一下吗?有没有办法使组合的两个标签与一个标签相同,而无需从剪切字符串中添加/删除字符?
操场
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
*/
解决方案
当您以这种方式组合 label4 和 label5 时,您将获得三个新行,
label4 应该是let label4 = createLabel("\nfoo\n\nbar", .brown)
最后删除\n
。
推荐阅读
- php - 如何显示用户登录历史?
- flutter - 从 SharedPreferences 获取数据后状态变量未更新
- python - Python 模块 github3 不适用于 ansible
- shell - 如何覆盖unix中的两个键值
- node.js - MongoDB 断开连接调用 2 个 db.on('close') 事件
- javascript - shouldComponentUpdate() is not being called
- css - 方形图像,Bootstrap 4
- java - 从 ant 迁移到 maven 项目
- outlook - Outlook Web Office 插件 - 通过代码使用自定义 Office 插件(任务窗格)保存/发送按钮事件句柄
- python-3.x - 按组求和和计数值