iOS7 では、AttributedText を介して UILabel テキストに適用される素晴らしい「レタープレス」テキスト効果が導入されました。シンプルなテーブルのセルにその効果を持たせる必要があります。
残念ながら、標準的な方法でレンダリングすると、「textLabel.text」の割り当てと比較して、スクロールの遅延が大幅に発生しました。
属性付きテキストのレンダリングは CPU の負荷が非常に高いようですが、Notes などの iOS 組み込みアプリは遅延なくスクロールします。レンダリングのパフォーマンスを改善することは可能ですか?
以下はコードサンプルです:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyCell *cell = (MyCell*)[tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil)
{
cell = [[MyCell alloc] init];
}
NSDictionary *attrs = @{NSTextEffectAttributeName : NSTextEffectLetterpressStyle};
NSString *text = [self textWithCell:indexPath];
//next line causes lags
textLabel.attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:attrs];
//this works fine
//cell.textLabel.text = text;
}