对于显然是“错误”的东西,UITextView 似乎不像其他 UIKit 元素那样支持字距调整。是否有解决方法可以使字距调整工作?
为了清楚起见,我说的是字体文件中定义的字符对之间的间距,而不是所有字符之间的一般间距。使用NSAttributedString
withNSKernAttributeName
将调整所有字符之间的间距,但内置的字符对仍然不起作用。
例如:
有没有解决方法来解决这个问题?
我发现的一种简单解决方法是将 css 样式添加到启用字距调整的 UITextView。如果我使用未记录的方法setContentToHTMLString:
,我可以将 css 注入文本视图中的秘密 webview。
NSString *css = @"*{text-rendering: optimizeLegibility;}";
NSString *html = [NSString stringWithFormat:@"<html><head><style>%@</style></head><body>Your HTML Text</body></html>", css];
[textView performSelector:@selector(setContentToHTMLString:) withObject:html];
这可以立即解决问题;但是,这似乎很可能会导致应用被拒绝。有没有一种安全的方法可以将一些 CSS 潜入文本视图?
我尝试过的其他解决方法包括:
使用 webview 和 contenteditable 属性。这并不理想,因为 webview 做了很多额外的事情,例如不容易隐藏的输入附件视图。
使用核心文本手动子类化UITextView
和渲染文本。这比我希望的要复杂,因为所有选择的东西也需要重新配置。由于UITextView
's 的私有子类,如果不是完全不可能的话UITextPosition
,UITextRange
这是一个巨大的痛苦。