我的应用仅针对iOS 7。我有UITextView
提出NSAttributedString
。字符串表示文档,每个段落都有许多属性设置在其上以进行样式设置。有些段落需要在ALL CAPS中呈现,但是,段落的样式可以由用户更改为具有常规大小写的内容,因此必须保留字符串的原始大写。
我该怎么做呢?我的第一个想法是使用新的Text Kit功能并进行某种字形替换,但是我无法解决这个问题。另一种想法是创建一个自定义字体,其中所有字符都是大写字母。
同样,我不能只改变支持字符串,因此uppercaseString
之类的东西不起作用。
答案 0 :(得分:1)
刚刚开始研究一些TextKit的东西,我会捅这个。
我将创建一个自定义的NSLayoutManager子类并覆盖:
- (void)setGlyphs:(const CGGlyph *)glyphs properties:(const NSGlyphProperty *)props characterIndexes:(const NSUInteger *)charIndexes font:(UIFont *)aFont forGlyphRange:(NSRange)glyphRange
在这个方法中,您需要自己进行字形生成,虽然听起来很难,如“Getting Glyphs for Characters上的CoreText文档”所述。基本上,您只需要抓取self.textStorage
引用的characterIndexes
引用的字符,然后使用CFStringCapitalize()
使其全部上限。
请注意-setGlyphs:…
方法上的文档,因为它有一些奇怪之处。
希望这至少可以指出你正确的方向。