2011-07-06 7 views
3

グループ化されたUITableViewCellの背景画像を設定するのに、[UIColor colorWithPatternImage:]を使用しています。私は自分の細胞のための自由な丸いコーナーを得て、私は細胞に異なる高さを与えようとするまで、すばらしく見える。[UIColor colorWithPatternImage:]を使用してパターン位相を変更するにはどうすればよいですか?

理想的には、背景画像を垂直に配置したいのですが、colorWithPatternImage:メソッドは、左下隅から画像パターンを開始するため、セルが悪く見えます。

これは、デフォルトで

」は、返された色の位相は描画の原点と一致する画像の左上隅を引き起こす、0であること。位相を変更するには文書で述べています色を現在の色にしてから、CGContextSetPatternPhase関数を使って位相を変更してください。

しかし、現在の実装ではCGContextSetPatternPhaseをどのように使用するのか分かりません。

私は

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSaveGState(context); 

    CGSize phase = CGSizeMake(50, 50); 
    CGContextSetPatternPhase(context, phase); 

    UIImage* image = [UIImage imageNamed:@"cell_background"]; 

    UIColor* color = [UIColor colorWithPatternImage:image]; 

    self.backgroundColor = color; 

    CGContextRestoreGState(context); 

    [super drawRect:rect]; 
} 

を試みたが、それは、パターンの位相には影響しません。誰も私はそれを使用すると思いますか?

多くのおかげで、

ジョセフ

答えて

2

コアグラフィックスコールは一般に、特定の描画処理の一部として使用されます。 backgroundColorプロパティを設定しても、実際に描画されるわけではなく、デフォルトでビューの描画方法が設定されます。 Quartz 2D Programming Guideにはexplanation of how to draw using pattern imagesがあります。あなたは

CGColorRef color = [UIColor colorWithPatternImage:image].CGColor; 
CGContextSetFillColorWithColor(context, color); 
CGContextFillRect(context, self.bounds); 

経由でショートカットを取ることができるかもしれない...しかし、UIColorパターンはコアグラフィックスとうまく再生できない場合がありますので、私は、それを保証しません。上のリンクで説明されているより精巧なルートを取らなければならないかもしれません。

+1

おかげでノアは、実際にパターンの位相を変更します。残念ながら、 'drawRect:'はセルの最後のレイヤーを描画し、丸みを帯びたコーナーやものを失ったため、私の状況には当てはまりません。しかし私はそれについて別の質問をするべきだと思う。 –

関連する問題