2012-02-16 10 views
2

のスタイルを持っていて、微妙な違い(色が異なり、半径が短い丸いコーナーのような)を持っているように、私はUITableViewのスタイルをしたいと思う。行の高さは可変です。私は、このカスタムスタイルを私のアプリのほとんどのテーブルビューコントローラに使用したいと思います。例えば、Twitter、Groupon、& GitHubを参照してください。カスタムUITableViewCell backgroundView&selectedBackgroundView

どうすればよいですか?

のようにしていると思います。 backgroundView & selectedBackgroundViewを両方ともUIGroupTableViewCellBackground(サブクラスUIView)のインスタンスに設定します。 UIGroupTableViewCellBackgroundはレイヤのデリゲートであり、レイヤのコンテンツをCGImageRefに設定するためにdrawLayer:を実装しています。

  1. 私は、Appleはまた、CGLayerを使用して検討する代わりに、ビットマップグラフィックスコンテキストに描画することを提案Quartz 2D Programming Guide : Creating a Bitmap Graphics Context、に従って、このCGImageRefを作成し、かなり確信しています。このアプリケーションにはどちらが適していますか?また

  2. 、テーブルビューの最初のセルはUIImageViewを使用してその上部に丸いコーナーで影を追加する(これは、半透明のPNGファイルでサイズ変更可能(幅方向)UIImageに設定する。)それをしない理由それを行う?この遅いスクロールはしませんか?なぜ最初のセルのCGImageRefにこれを描画しないのですか?たぶん、パフォーマンスの低下はそれほど重要ではなく、セルを画像で正確に見せるのは簡単でした。私はセルのCGImageRefをディスクに保存し、プレビューでそれを開いた。それはまだ角が丸まっています。このオーバーレイされたビューは、トップシャドウを追加するだけです。

    以下は、テーブルビューで「カラーブレンドレイヤー」が選択された状態で、Core Graphics Instrumentsツールをデバイス上で実行した場合のスクリーンショットです。上のシャドウがブレンドされていることがわかります。そして、最後のセルでもブレンドされているように見えます。選択された第3のセル(無配合)で

    enter image description here

    enter image description here

    。最初または最後のセルを選択すると同じ動作が実行されますが、すでにブレンドされたオーバーレイビューは取り除かれません。

    enter image description here

答えて

0

あなたが描画されている行の数をカウントし、個々のセルの背景として画像を設定することができます。

何がしなければならないことは

cell.backgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cell_normal.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]autorelease]; 
cell.selectedBackgroundView = [ [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cell_pressed.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]autorelease]; 

使用はあなたがまた違うイメージを適用する& & &部分の前に一つの条件を適用することができ、背景画像

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{  

     &&&& 


    if((indexPath.row)==0) 
     // set image upper corner image here 

    else if (indexPath.row==1) 
     //set normal image here 

    else if (indexPath.row==YourArray) 
     // also set the lower corner round image in the last low, which can be calculated by comparing indexpath.row to the mutablearray/array 

} 

を設定するには、この方法であり、 array.count == 1の場合、上隅と下隅の両方が丸められます

関連する問題