6

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;
  }
4

0 に答える 0