我想要一個UITextView在兩種顯示模式之間切換。 在模式1中,它應該顯示縮寫,並在模式2中顯示完整的單詞。例如「縮寫」。 vs「縮寫」。如何插入額外的字形?
什麼是最好的方法來做到這一點?請記住,有些單詞可以具有相同的縮寫,並且用戶可以自由輸入完整的單詞或縮寫?
到目前爲止,我嘗試子類NSLayoutManager。 假設我得到一個簡短的字符串,我要畫完整的單詞,我會實現以下方法:
-(void)setGlyphs:(const CGGlyph *)glyphs
properties:(const NSGlyphProperty *)props
characterIndexes:(const NSUInteger *)charIndexes
font:(UIFont *)aFont
forGlyphRange:(NSRange)glyphRange
{
NSUInteger length = glyphRange.length;
NSString *sourceString = @"a very long string as a source of characters for substitution"; //temp.
unichar *characters = malloc(sizeof(unichar) * length+4);
CGGlyph *subGlyphs = malloc(sizeof(CGGlyph) * length+4);
[sourceString getCharacters:characters
range:NSMakeRange(0, length+4)];
CTFontGetGlyphsForCharacters((__bridge CTFontRef)(aFont),
characters,
subGlyphs,
length+4);
[super setGlyphs:subGlyphs
properties:props
characterIndexes:charIndexes
font:aFont
forGlyphRange:NSMakeRange(glyphRange.location, length+4)];
}
但是這種方法會抱怨無效字形索引「_NSGlyphTreeInsertGlyphs無效字符的索引」時我嘗試插入4個附加字形。
出了什麼問題只是改變了_text_ ? – matt
有些詞映射到相同的縮寫。 – user965972
那麼?在自定義屬性中保留祕密信息(即原始單詞是什麼)。 – matt