gpt4 book ai didi

ios - 在不更改支持字符串的情况下以大写形式呈现文本? (iOS7 & 文本工具包)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:26 27 4
gpt4 key购买 nike

我的应用程序仅针对 iOS 7。我有一个 UITextView 呈现一个 NSAttributedString。该字符串代表一个文档,每个段落都设置了许多属性以用于样式设置。有些段落需要全部大写,但是,用户可以将段落的样式更改为常规大写,因此必须保留字符串的原始大写。

我该怎么做呢?我的第一个想法是使用新的 Text Kit 功能并进行某种字形替换,但我无法理解这将如何工作。另一个想法是创建一个自定义字体,其中所有字符都是大写的。

同样,我不能只更改支持字符串,所以像 uppercaseString 这样的东西是行不通的。

最佳答案

刚刚开始研究一些 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:... 方法的文档,因为它有一些奇怪之处。

希望这至少能为您指明正确的方向。

关于ios - 在不更改支持字符串的情况下以大写形式呈现文本? (iOS7 & 文本工具包),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909063/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com