如何垂直对齐textView中的文本? (迅速)
Posted
技术标签:
【中文标题】如何垂直对齐textView中的文本? (迅速)【英文标题】:How to align text inside textView vertically? (Swift) 【发布时间】:2020-10-01 20:30:51 【问题描述】:我发现这在链接到 viewController 的 UITextView 上非常有效,但我不知道如何让它在单独的类中创建的 UITextView 上正常工作。
https://***.com/a/41387780/8635708
我希望视图高度为三个单位(字符高度)并且内容垂直居中。
会发生这样的事情:
另一方面,如果我将视图设置为 4 个单位高,它看起来不错 - 但我没有空间。
这是我所做的(这似乎适用于单行)。
class TestClass: UIView
var titleView1 = UITextView()
var titleView2 = UITextView()
override func layoutSubviews()
titleView1.centerVertically()
titleView2.centerVertically()
override func draw(_ rect: CGRect)
super.draw(rect)
let h = 3 * GlobalConstants.fontSize // 3 * 14 = 42
var title = "Single Line"
var bounds = CGRect(x: 10, y: 10, width: 100, height: h)
displayTitle(str: title, column: &titleView1, bounds: bounds)
title = "First Line\nSecondLine"
bounds = CGRect(x: 120, y: 10, width: 100, height: h)
displayTitle(str: title, column: &titleView2, bounds: bounds)
func displayTitle(str: String, column: inout UITextView, bounds: CGRect)
let view = UITextView(frame: bounds)
let attributes: [NSAttributedString.Key: Any] = [
.foregroundColor: UIColor.blue,
.font: UIFont.italicSystemFont(ofSize: 16)
]
let attributedText = NSMutableAttributedString(string: str, attributes: attributes)
view.attributedText = attributedText
view.textAlignment = .center
view.centerVertically()
self.autoresizesSubviews = true
self.addSubview(view)
我不相信可以简单地使用NSAttributedString
完成垂直对齐,但如果可能,请告诉我如何操作!
谢谢!
【问题讨论】:
这是否可以由用户编辑?那么,当用户键入时,文本会随着新行的添加而垂直移动? 不,它们将是保持固定的表的标题。 不可编辑?嗯...那为什么要使用UITextView
? UILabel
自动垂直居中文本...
当然!最初,我将标题和表格中的所有数据放在一起,但将标题分离出来进行格式化......有时你必须上来看看大图!谢谢! (再次!)
除了那个简单的解决方案,为什么上面的方法不起作用?如果文本确实发生了变化怎么办?
【参考方案1】:
我将行数设置为 0 并使用“\n”向上或向下移动文本。
非常容易使用!
"Single Line" + "\n\n\n" 将文本向上移动 3 行 "\n\n\n" + "Single Line" 将文本下移 3 行
【讨论】:
以上是关于如何垂直对齐textView中的文本? (迅速)的主要内容,如果未能解决你的问题,请参考以下文章
当 TextView 是匹配约束时,如何对齐 TextView 中的文本?