web-dev-qa-db-ja.com

背景色がクリアカラーの場合、影が表示されない

Xibで背景色をクリアカラーとしてuiviewを作成しました。ビューのレイヤーにシャドウを適用すると、シャドウが表示されません。しかし、クリアカラー以外の背景色を設定すると、影が表示されます。助けてください。

これは私のコードです

self.cView.layer.shadowColor=[UIColor whiteColor].CGColor;
self.cView.layer.shadowOffset=CGSizeZero;
self.cView.layer.shadowRadius=30.0;
self.cView.layer.shadowOpacity=1.0;
self.cView.layer.cornerRadius=10.0;
28
Mukunda

問題は、そのシャドウが実際には「上位」レイヤーを考慮に入れていることです。その上に何もない場合、影はありません: 影のしくみ

編集:

このレシピがあります ペーストビンからコピー

view.layer.shadowColor = [UIColor colorWithWhite:.5 alpha:1].CGColor;
view.layer.shadowRadius = 4.0f;
view.layer.shadowPath = CGPathCreateWithRect(CGRectMake(0, 0, 50, 50), NULL);
view.layer.shadowOpacity = 1.0f;
view.layer.shadowOffset = CGSizeMake(1, 1);

しかし、これがあなたにとって何の役にも立たないのではないかと思います。その結果、影とその周りの影の色で「ペイントされた」ビューになります。

29
Rok Jarc

ShadowPathプロパティ(例:shadowView.layer.shadowPath = UIBezierPath(roundedRect: shadowView.bounds, cornerRadius: 10).cgPath)を指定すると、.clearbackgroundColorでも機能します。

3
Demosthese

self.cView.clipToBoundsNOに設定することを忘れないでください。

0
Cyrille