7

こんにちは私はシャドウがビューの左右にあるビューにCALayerシャドウを追加するのが好きです。最も簡単な方法は次のとおりです。

someView.layer.shadowColor = [[UIColor blackColor] CGColor];
someView.layer.shadowOffset = CGSizeMake(0.0f,0.0f);
someView.layer.shadowOpacity = 1.0f;
someView.layer.shadowRadius = 10.0f;
someView.layer.shadowPath = [[UIBezierPath bezierPathWithRect:someView.bounds] CGPath];

しかし、shadowRadiusを増やすと、影のように大きな影を追加します。見栄えがよくありません。左右に似合う影を作るにはどうすればいいですか。

4

4 に答える 4

31

10 はかなり大きなシャドウ半径だと思います。代わりに 3 または 4 を試してください。不透明度も通常 0.7 を使用します。

someView.layer.shadowColor = [[UIColor blackColor] CGColor];
someView.layer.shadowOffset = CGSizeMake(0.0f,0.0f);
someView.layer.shadowOpacity = 0.7f;
someView.layer.shadowRadius = 4.0f;

左右にのみ影が必要な場合は、上下に長方形を挿入して、上下の影がビューの後ろに隠れるようにします。

CGRect shadowRect = CGRectInset(someView.bounds, 0, 4);  // inset top/bottom
someView.layer.shadowPath = [[UIBezierPath bezierPathWithRect:shadowRect] CGPath];

それがあなたが望んでいたものかどうかはよくわかりません。

于 2013-01-08T16:34:58.330 に答える
8

迅速な 3.0 バージョン

imageView.layer.shadowOpacity = 0.8
imageView.layer.shadowOffset = CGSize(width: 0, height: 3)
imageView.layer.shadowRadius = 4.0

let shadowRect: CGRect = imageView.bounds.insetBy(dx: 0, dy: 4)
imageView.layer.shadowPath = UIBezierPath(rect: shadowRect).cgPath
于 2017-07-06T09:20:52.143 に答える
0

progrmr の回答は非常に役に立ちました。

スライド アウト メニューを作成しましたが、VC の周囲に影ができてナビゲーション バーが邪魔になるという問題がありました。シャドウレイヤーを挿入する必要があることが判明しました。

Swiftを使用した私のソリューションは次のとおりです。

rightViewController!.view.layer.shadowOpacity = 0.8
rightViewController!.view.layer.shadowOffset = CGSizeMake(0, 3)
rightViewController!.view.layer.shadowRadius = 4.0

let shadowRect: CGRect = CGRectInset(rightViewController!.view.bounds, 0, 4);  // inset top/bottom
rightViewController!.view.layer.shadowPath = UIBezierPath(rect: shadowRect).CGPath
于 2016-06-27T13:46:42.147 に答える