3

ビューの 1 つにいくつかの影を追加しようとしています。達成したいのは、片側だけに影を描き、それらに鋭いエッジを持たせることです。いいえ、かなりの数の方法を試しましたが、うまくいきませんでした (ビューの CALayer + UIBezierPaths のシャドウ関連のプロパティを使用)。ただし、iOS は常に次のようなソフト エッジの影をレンダリングします。

ここに画像の説明を入力

しかし、私が本当に達成したいのは、次のようなものです( 1つを除いて、側面に丸い角と鋭いエッジはありません):

ここに画像の説明を入力

これを行うエレガントな方法はありますか、それとも CoreGraphics を使用して自分で影を描く必要がありますか?

PS: 言い忘れましたが、私のビューは実際にはカスタム UIButton である必要があるため、drawRect: をオーバーライドするのは面倒です。

4

2 に答える 2

4

ビューから影を削除するマスクを経験したので、それを試してみてください。

    CALayer *mask = [[[CALayer alloc] init] autorelease];
    mask.backgroundColor = [UIColor blackColor].CGColor;
    mask.frame = CGRectMake(0.0, 0.0, yellowView.bounds.size.width + shadowWidth, yellowView.bounds.size.height);
    yellowView.layer.mask = mask;
于 2012-05-16T21:12:11.447 に答える
2

変更したいのはshadowRadius値だと思います-それをゼロに設定すると、探している鋭いエッジが得られるはずです:

myView.layer.shadowRadius = 0;
于 2012-05-16T21:13:36.327 に答える