【问题标题】:How can I horizontally center a single line of text in UITextView?如何在 UITextView 中将单行文本水平居中?
【发布时间】:2014-02-03 09:12:48
【问题描述】:

我有一个显示大量文本的 UITextView。我需要将文本视图中的一些但不是全部文本行水平居中。

我尝试使用 NSParagraphStyle 实例设置 NSParagraphStyleAttributeName,该实例的 alignment 属性在要居中的行范围内为 NSTextAlignmentCenter。我还设置了字体,所以中心线是粗体。当我使用下面的代码执行此操作时,相关行以粗体显示,但保持左对齐。

if (shouldCenterLine) {
    NSMutableParagraphStyle *centerStyle = [[NSMutableParagraphStyle alloc] init];
    centerStyle.alignment = NSTextAlignmentCenter;
    NSDictionary *attributes = @{NSParagraphStyleAttributeName : centerStyle,
                                 NSFontAttributeName : boldFont};
    [attributedString setAttributes:attributes range:lineRange];
}

如果我将相同的段落样式属性应用于文本视图的全部内容,文本最终会按预期居中。

是否可以说服UITextView 将其文本的特定子范围居中?移动到 UIWebView 渲染生成的 HTML 的唯一解决方案是什么?请注意,这是针对仍支持 iOS 6 的应用程序,所以很遗憾我无法使用 Text Kit。

【问题讨论】:

  • 我没有尝试更改段落样式的经验,但我想我会尝试更广泛的范围。你现在用什么范围?它是否包括结束该行的换行符?它是否包括开始该行的行返回?也许只是尝试在之前和之后包含几个字符。如果它仍然不起作用,请尝试执行整个字符串,以验证它是否识别NSTextAlignmentCenter。 (包括产生lineRange 的代码可能会有所帮助。)
  • @ArtOfWarfare 谢谢!请发表您的评论作为答案,以便我接受。扩展 lineRange 以在要居中的行之前包含换行符(即在开头添加一个额外的字符)解决了问题。
  • 很高兴听到我的帮助。这是我第一次查看 StackOverflow 的首页,并看到一些我可以提供帮助但没有其他人回答的内容。

标签: ios objective-c cocoa-touch uitextview text-alignment


【解决方案1】:

尝试在您希望在应用样式的范围内居中的线条周围包含折线。

【讨论】:

    猜你喜欢
    • 2016-02-21
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2011-03-29
    • 2019-10-19
    • 2018-10-01
    • 2021-11-09
    相关资源
    最近更新 更多