我在UITableViewCell中使用UILabels我的代码在下面,我不知道为什么它会有填充?
UITableViewCell
UILabels
cell.lbl1.text = "Name - " cell.lbl2.text = "Class - " cell.lbl3.text = "Reason - "
字符串
的数据我正在寻找一致的间距从文本之前"-"
"-"
wgmfuz8q1#
你假设每个字符的宽度相等。这只适用于等宽字体。你可以使用UIFont.monospacedSystemFont来获得默认等宽字体:
UIFont.monospacedSystemFont
cell.lbl1.font = UIFont.monospacedSystemFont(ofSize: UIFont.systemFontSize, weight: .regular)
字符串如果你不想改变字体,一个简单的解决方案是把“-”字符放到另一个UILabel中。这样,你可以限制左边的所有标签都有相同的宽度,而“-”标签会在它们的右边。使用UIStackView s执行此操作的示例:
UILabel
UIStackView
func makeLabel(_ text: String) -> UILabel { let label = UILabel() label.text = text label.font = UIFont.monospacedSystemFont(ofSize: UIFont.systemFontSize, weight: .regular) return label } func makeHStack(_ text: String) -> UIStackView { let stackView = UIStackView(arrangedSubviews: [makeLabel(text), makeLabel("-")]) stackView.axis = .horizontal NSLayoutConstraint.activate([ // freely adjust this 0.4 ratio stackView.arrangedSubviews[0].widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: 0.4) // making the width equal to a constant is also an option ]) return stackView } // constructing the 3 rows and placing them into a superview let vstack = UIStackView(arrangedSubviews: [makeHStack("Name"), makeHStack("Class"), makeHStack("Reason")]) vstack.axis = .vertical view.addSubview(vstack) vstack.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ vstack.widthAnchor.constraint(equalTo: view.widthAnchor), vstack.centerXAnchor.constraint(equalTo: view.centerXAnchor), vstack.centerYAnchor.constraint(equalTo: view.centerYAnchor), ])
型
2hh7jdfx2#
有一个简单的解决方案-用制表符代替空格。不需要等宽字体或堆栈视图。开始:
cell.lbl1.text = "Name\t\t\t- " cell.lbl2.text = "Class\t\t\t- " cell.lbl3.text = "Reason\t\t\t- "
字符串根据字体的不同,你可能需要更多或更少的\t(制表符)字符才能让它排成一行。
\t
2条答案
按热度按时间wgmfuz8q1#
你假设每个字符的宽度相等。这只适用于等宽字体。你可以使用
UIFont.monospacedSystemFont
来获得默认等宽字体:字符串
如果你不想改变字体,一个简单的解决方案是把“-”字符放到另一个
UILabel
中。这样,你可以限制左边的所有标签都有相同的宽度,而“-”标签会在它们的右边。使用
UIStackView
s执行此操作的示例:型
2hh7jdfx2#
有一个简单的解决方案-用制表符代替空格。不需要等宽字体或堆栈视图。
开始:
字符串
根据字体的不同,你可能需要更多或更少的
\t
(制表符)字符才能让它排成一行。