9

http://news.selectstartstudios.com/beveled-uitableviewcells/から Beveled UITableViewCells に関するこの投稿を見つけました。この手法を使用してセルの幅を縮小していますが、ほとんどの場合、うまく機能します。

ただし、小さな問題があります。セルが正しく再描画されないことがあります。たとえば、セルが「中間」セルであると想定されている場合でも、「上部」セルとして描画されます: yfrog.com/f1screenshot20100424at100

どうすればこれを修正できますか?

[cell setNeedsDisplay]、[cell setNeedsLayout]、[tableView reloadRowAtIndexPath:withAnimation:]、[cell drawrect:]、および [tableView drawRect:atIndexPath] を介してセルを強制的に再描画しようとしました。私はアイデアがありません。

再度、感謝します!

4

2 に答える 2

25

cellForRowAtIndexpath の最後で [cell.backgroundView setNeedsDisplay] を呼び出す必要があることがわかりました。

于 2010-04-25T07:33:19.310 に答える
1

cellForRowAtIndexpath私の一部がバックグラウンドスレッドにあったため、同じ問題に遭遇しました。この場合の解決策は、セル サブビューの直接更新をメイン スレッドに強制することです。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
    if (cell.tag == indexPath.row){
       // data retrieval that may block main thread and cause temp freeze...
       dispatch_async(dispatch_get_main_queue(), ^{
          // update any cell subviews here
       }
    }
});
于 2016-04-25T00:29:15.840 に答える