【发布时间】: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