对齐 iOS(Swift 或 Objective-C)中的文本而不打断 tracking/kerning/letter 间距
Justify text in iOS (Swift or Objective-C) without breaking tracking/kerning/letter spacing
见下文:
// Description (HTML string):
var attrStr = NSMutableAttributedString(
data: formatted.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil,
error: nil)
var paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = NSTextAlignment.Justified
attrStr?.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, attrStr!.length))
attrStr?.addAttribute(NSKernAttributeName, value: -0.1, range: NSMakeRange(0, attrStr!.length))
descLabel.attributedText = attrStr
descLabel.sizeToFit()
到目前为止,我所有证明文本合理性的尝试都导致了完全相同的行为。我试过通过内联样式 CSS int eh html 文本,或使用 textAlignment
属性。
问题是,对齐文本打断了字母间距(实际上它增加了每个单词的 tracking/kerning 而不是只增加了中间的 space)。
见:
我希望看到一个不是 hack 的解决方案,因为我自己设计了一些 hack,但后来我陷入了其他问题的太多可能性。
我是不是漏掉了一些简单的东西?我已经完成了所有 UI 选项,正如我的代码示例中所见,我什至尝试更改 Kern,它确实发生了变化,但只是按比例变化(即它仍然增加)。
您是否尝试添加 hyphenationFactor
为 1 的 NSParagraphStyle
属性?
这将保持您的字距调整和字间距,但会在单词需要换行时添加连字符。
见下文:
// Description (HTML string):
var attrStr = NSMutableAttributedString(
data: formatted.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil,
error: nil)
var paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = NSTextAlignment.Justified
attrStr?.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, attrStr!.length))
attrStr?.addAttribute(NSKernAttributeName, value: -0.1, range: NSMakeRange(0, attrStr!.length))
descLabel.attributedText = attrStr
descLabel.sizeToFit()
到目前为止,我所有证明文本合理性的尝试都导致了完全相同的行为。我试过通过内联样式 CSS int eh html 文本,或使用 textAlignment
属性。
问题是,对齐文本打断了字母间距(实际上它增加了每个单词的 tracking/kerning 而不是只增加了中间的 space)。
见:
我希望看到一个不是 hack 的解决方案,因为我自己设计了一些 hack,但后来我陷入了其他问题的太多可能性。
我是不是漏掉了一些简单的东西?我已经完成了所有 UI 选项,正如我的代码示例中所见,我什至尝试更改 Kern,它确实发生了变化,但只是按比例变化(即它仍然增加)。
您是否尝试添加 hyphenationFactor
为 1 的 NSParagraphStyle
属性?
这将保持您的字距调整和字间距,但会在单词需要换行时添加连字符。