设置NSAttributedString
并比较两个UITextViews
和一个kern设置为0而另一个没有kern。我注意到一种奇怪的行为。如果我将kern设置为0,我得到的结果与完全不设置完全不同。几乎就像我得到超过0 kern或至少在单词之间。我还对UILabel进行了测试,并且kern匹配了未设置kern的NSAttributedString
。在docs中,它表示默认值为0,但也表示禁用了带0的字距调整。还有其他一些我失踪的东西。这是一个实现alphas设置来比较结果。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let label = UILabel()
label.frame = CGRect(x: 100, y: 100, width: 200, height: 41)
label.font = UIFont.systemFont(ofSize: 80)
label.numberOfLines = 0
label.alpha = 0.6
label.adjustsFontSizeToFitWidth = true
label.text = "great World This is a test"
label.textColor = .black
label.sizeToFit()
self.view.addSubview(label)
let textView = UITextView(frame: label.frame)
textView.font = label.font
textView.attributedText = NSAttributedString(string: label.text!, attributes: [.font:label.font,.kern:0,.foregroundColor:UIColor.green])
textView.textContainerInset = UIEdgeInsets.zero
textView.textContainer.lineFragmentPadding = 0
textView.alpha = 0.4
self.view.addSubview(textView)
let anotherTextView = UITextView(frame: label.frame)
anotherTextView.font = label.font
anotherTextView.attributedText = NSAttributedString(string: label.text!, attributes: [.font:label.font,.foregroundColor:UIColor.red])
anotherTextView.textContainerInset = UIEdgeInsets.zero
anotherTextView.textContainer.lineFragmentPadding = 0
anotherTextView.alpha = 0.6
self.view.addSubview(anotherTextView)
}
}
我的目标是让UITextView
与UILabel
匹配,但设置为kern为0。
这是结果的图像:
从我的测试中,如果我将kern设置为一些任意小的非零正数,它们似乎都匹配。
例如:
.kern:0.0001。
也许这是完全禁用的答案。
这是任意小数的结果。
在理解正确设置方面有任何帮助,因为即使我的模型kern没有值,我也需要始终拥有默认值。
由于