1. ホーム
  2. ios

[解決済み] UIViewの角丸とドロップシャドウ?

2022-03-23 16:38:30

質問

数年前からあるアプリケーションに携わっているのですが、簡単なデザインの依頼を受けました。UIViewの角を丸くし、ドロップシャドウを追加してください。

カスタム UIView ... : 角が丸い真っ白なビューと、軽いドロップシャドウ(照明効果なし)が欲しかっただけなんです。ひとつひとつはできるのですが、通常の clipToBounds / maskToBounds のコンフリクトが発生します。

解決方法は?

次のコードでは、ボーダー、ボーダー半径、ドロップシャドウを v , a UIView :

// border radius
[v.layer setCornerRadius:30.0f];

// border
[v.layer setBorderColor:[UIColor lightGrayColor].CGColor];
[v.layer setBorderWidth:1.5f];

// drop shadow
[v.layer setShadowColor:[UIColor blackColor].CGColor];
[v.layer setShadowOpacity:0.8];
[v.layer setShadowRadius:3.0];
[v.layer setShadowOffset:CGSizeMake(2.0, 2.0)];

Swift 5 バージョン:

// border radius
v.layer.cornerRadius = 30.0

// border
v.layer.borderColor = UIColor.lightGray.cgColor
v.layer.borderWidth = 1.5

// drop shadow
v.layer.shadowColor = UIColor.black.cgColor
v.layer.shadowOpacity = 0.8
v.layer.shadowRadius = 3.0
v.layer.shadowOffset = CGSize(width: 2.0, height: 2.0)

お好みに合わせて調整してください。

また、プロジェクトにQuartzCoreフレームワークを追加し。

#import <QuartzCore/QuartzCore.h>

参照 別解 について masksToBounds .


備考

すべてのケースでうまくいくとは限りません。もし、この方法が他の描画操作の妨げになるようであれば、以下のサイトを参照してください。 この回答 .