2011-06-28 5 views
4

私は自分のUITableViewをカスタマイズしており、各セルの選択された色を設定する方法を考え出しました。私のcellForRowAtIndexPath方法では、私は次のコードを持っている:グラデーションimageView iOS

UIView *bgColorView = [[UIView alloc] init]; 
    [bgColorView setBackgroundColor:[UIColor orangeColor]]; 
    [cell setSelectedBackgroundView:bgColorView]; 
    [bgColorView release]; 

をしかし、それはオレンジ色の固体です。私はより滑らかに見えるようにしたい、そしてそれはライトオレンジからより暗いオレンジまでわずかな勾配にしてください。これどうやってするの?

答えて

3

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGFloat colors[8] = {1.0, 0.75, 0.30, 0.5, 0.7, 0.2, 1.0, 0.8}; 
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); 
CGGradientRef gradient = CGGradientCreateWithColorComponents(space, colors, NULL, 2); 
CGContextDrawLinearGradient(ctx, gradient, top, bottom, NULL); 

ヨ:

あなたのビューの-drawRect:方法でグラデーションを描画するコアグラフィックス(別名クォーツ)を使用したいです現在のコンテキスト(ctx)にパスを作成し、CGContextClip(ctx);を使用してクリッピングすることで、グラデーションが塗りつぶす領域を制限することができます。 topおよびbottomは、グラデーションの開始点と終了点を定義するCGPointです。

3

グラデーションを描画するには、ビューのdrawRectメソッドをオーバーライドする必要があります。それは一種のPIAすることができますが、あなたも仕事も、このオープンソースコンポーネントをチェックアウトすることができます:

http://cocoacontrols.com/platforms/ios/controls/gradient-view

1

@カレブの答えは正しいです。私は様々なことのためにこれを行います。

drawRect:を実装する必要があるビューは、カスタムUITableViewCellです。

0

複雑で微妙なグラデーションが必要な場合は、部分アルファの背景画像を設定し、セルの背景色を設定して外観を変更できます。