1

グループ化された UITableView セクションの外縁の周りに描画したい影の画像があります。これは画像です:

ここに画像の説明を入力

描画したい四角形を表す UIBezierPath を取得できますが、四角形のルートに沿って画像を繰り返す方法がわかりません。これまでのところ、四角形を画像で埋めるだけです:

UIImage *patternImg = [UIImage imageNamed:@"cellShadow"];
UIColor *fill = [UIColor colorWithPatternImage:patternImg];
[fill setFill];
CGRect aSectRect = [self rectForSection:0];
UIBezierPath *aSectPath = [self createRoundedPath:aSectRect];
[aSectPath fill];

これは可能ですか?私は何をする必要がありますか?

4

1 に答える 1

3

残念ながら、UIBezierPath でイメージを「ブラシ」として使用する方法はありません。これは、本質的に必要なことです。ただし、CoreGraphics に影を描画させることができます。

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShadow(context, CGSizeZero, myShadowRadius);
// Draw your shape here

1 つの図形だけを描画すると、影ができます。しかし、さらに多くの図形を描画すると、それぞれに独自の影ができてしまい、それが望みのものではない可能性があります。ソリューションは透明レイヤーと呼ばれ、CALayers などとは関係ありませんが、CoreGraphics でのある種の「グループ化」にすぎません。

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShadow(context, CGSizeZero, myShadowRadius);
CGContextBeginTransparencyLayer(context, NULL);
// Draw your shapes here.
CGContextEndTransparencyLayer(context);

CGContextBeginTransparencyLayerとの呼び出しの間でCGContextEndTransparencyLayer、シャドウは無効になります。呼び出しの後、beginendの間に描画されたすべてのものに、あたかも 1 つの図形であるかのようCGContextEndTransparencyLayerに影が適用されます。

于 2013-05-13T18:27:22.100 に答える