无法使用 UITextView 应用行距?
Posted
技术标签:
【中文标题】无法使用 UITextView 应用行距?【英文标题】:Can't apply line spacing with UITextView? 【发布时间】:2017-03-23 02:51:45 【问题描述】:你对 UITextView 的行距有什么想法吗?我无法应用它。下面是我的代码。
import UIKit
class DetailViewController: UIViewController
@IBOutlet weak var itemTextView: UITextView!
var txtString: String?
var txtTitleBar:String?
override func viewDidLoad()
super.viewDidLoad()
//navigationController?.navigationItem.title = "Love"
self.title = txtTitleBar
//self.tabBarController?.navigationItem.title = "My Title"
itemTextView.text = txtString
itemTextView.font = UIFont(name: "Arial-Regular", size:20)
itemTextView.font = .systemFont(ofSize: 25)
(itemTextView.font?.lineHeight)! * 5
【问题讨论】:
(itemTextView.font?.lineHeight)! * 5
应该做什么?
它应用了行距但不能生效
不,这不适用行距。您读取行距值并将该值乘以 5。但您对结果无能为力。
现在它正在处理这个: let style = NSMutableParagraphStyle() style.lineSpacing = 20 let attributes = [NSParagraphStyleAttributeName : style] textView.attributedText = NSAttributedString(string: txtString, attributes: attributes)跨度>
您应该接受适当的答案,而不是张贴“谢谢”。
【参考方案1】:
您需要使用属性字符串并指定段落样式。例如:
let style = NSMutableParagraphStyle()
style.lineSpacing = 20
let attributes = [NSParagraphStyleAttributeName : style]
textView.attributedText = NSAttributedString(string: txtString, attributes: attributes)
有关属性字符串用法的更多详细信息,请参阅此 SO 答案:How do I make an attributed string using Swift?
【讨论】:
好的,但是如何使用户输入的文本保持相同的段落样式?我是否必须在每个 textFieldDidChange: 事件上执行您的代码? @linus_hologram 遇到同样的问题,你遇到过这个问题吗? @TomWicks 我最终在每个 textFieldDidChange: 事件中都使用了这段代码。据我所知,这是唯一的选择 使用textView.typingTextAttributes
。这将允许您设置默认属性。【参考方案2】:
Xcode 9.2 Swift 4
let style = NSMutableParagraphStyle()
style.lineSpacing = 0
let attributes = [NSAttributedStringKey.paragraphStyle : style]
txtViewAbout.attributedText = NSAttributedString(string: txtViewAbout.text, attributes: attributes)
【讨论】:
【参考方案3】:Xcode 10.1 Swift 4.2
let style = NSMutableParagraphStyle()
style.lineSpacing = 19
let attributes = [NSAttributedString.Key.paragraphStyle: style]
textView.attributedText = NSAttributedString(string: model.text, attributes: attributes)
【讨论】:
【参考方案4】:使用 typingAttributes 将确保属性适用于用户输入的新文本。
let style = NSMutableParagraphStyle()
style.lineSpacing = 10
let attributes = [NSAttributedString.Key.paragraphStyle : style )
]
textView.typingAttributes = attributes
【讨论】:
以上是关于无法使用 UITextView 应用行距?的主要内容,如果未能解决你的问题,请参考以下文章