我使用Core Text顯示NSAttributed字符串列。它工作正常。在使用系統字體時,它在模擬器和設備中都不會顯示任何延遲。但是,使用自定義字體時,需要更多時間來顯示設備中的內容。但在模擬器中,結果很快。更多時間用自定義字體顯示NSAttributed字符串
- (void)updateAttributedString
{
// Existing Code
if (self.text != nil)
{
self.attributedString = [[NSMutableAttributedString alloc] initWithString:self.text];
NSRange range = NSMakeRange(0, [self.text length]);
// Regarding Fixed font
// [ self.attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"TAUN_Elango_Abirami" size:20] range:range];//This is my custom font
// Regarding custom Font using below code
if (self.font != nil) {
CTFontRef font = [self createCTFont];
[self.attributedString addAttribute:(NSString *)kCTFontAttributeName
value:(__bridge id)font
range:range];
CFRelease(font);
}
}
}
- (CTFontRef)createCTFont;
{
CTFontRef font = CTFontCreateWithName((CFStringRef)self.fontName, self.pointSize, NULL);
return font;
}
如果我添加的代碼下面的行,
[self.attributedString addAttribute:(NSString *)kCTFontAttributeName
value:(__bridge id)font
range:range];
顯示歸因串是在設備慢。 但是,在模擬器中它很快。如果我不添加那段代碼,文本將在模擬器和設備中快速顯示。
你的問題是? –
@AlbertRenshaw我需要使用自定義字體,並且希望文本在設備中毫不拖延地顯示。緩慢是問題。 – Sharon
如果您使用XCode Instruments的時間分析,它是否指出特定的行?另外,您是否需要使用CoreText,CFStuff和橋接器? – Larme