【问题标题】:Justify text in iOS (Swift or Objective-C) without breaking tracking/kerning/letter spacing在 iOS(Swift 或 Objective-C)中对齐文本而不破坏跟踪/字距调整/字母间距
【发布时间】:2015-07-29 18:54:15
【问题描述】:

见下文:

// 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 属性。

问题是,对齐文本会破坏字母间距(实际上它会增加每个单词的跟踪/字距调整,而不仅仅是增加中间的空间)。

见:

我希望看到一个不是 hack 的解决方案,因为我自己设计了一些 hack,但是我陷入了其他问题的太多可能性。

我错过了一些简单的东西吗?我已经浏览了所有的 UI 选项,正如我的代码示例中所见,我什至尝试更改 Kern,它确实会改变,但只是按比例改变(即它仍然会增加)。

【问题讨论】:

    标签: ios uikit justify


    【解决方案1】:

    您是否尝试添加 NSParagraphStyle 属性,hyphenationFactor 为 1?

    这将保持您的字距和字间距,但会在单词需要换到下一行时添加连字符。

    【讨论】:

    • 太棒了!通过paragraphStyle.hyphenationFactor = 1 或通过用户界面轻松工作。
    • 这可能不是我正在寻找的直接答案,但它看起来非常好,并且将是我将使用的。如果我没有得到可以保留单词并锁定文本跟踪的答案,我将标记为已回答。
    • 在我的解决方案中实施,但如果有人仍然想回答,我想知道在证明时如何保持自动换行 + 字距调整/跟踪锁定。
    猜你喜欢
    • 2016-10-16
    • 1970-01-01
    • 2011-05-20
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    相关资源
    最近更新 更多