[解決済み] swift 3 を使って UIView に Shadow を追加する。
2023-08-01 06:16:01
質問
swift 3 より前のバージョンでは、次のように UIView にシャドウを追加していました。
//toolbar is an UIToolbar (UIView)
toolbar.layer.masksToBounds = false
toolbar.layer.shadowOffset = CGSize(width: -1, height: 1)
toolbar.layer.shadowRadius = 1
toolbar.layer.shadowOpacity = 0.5
しかし、上記のコードはSwift 3では動作せず、シャドウの代わりにビュー全体の色が醜いグレーになっています。
swift 3 でシャドウを追加する方法を知っている人はいますか?
どのように解決するのですか?
コード・スニペット。
extension UIView {
// OUTPUT 1
func dropShadow(scale: Bool = true) {
layer.masksToBounds = false
layer.shadowColor = UIColor.black.cgColor
layer.shadowOpacity = 0.5
layer.shadowOffset = CGSize(width: -1, height: 1)
layer.shadowRadius = 1
layer.shadowPath = UIBezierPath(rect: bounds).cgPath
layer.shouldRasterize = true
layer.rasterizationScale = scale ? UIScreen.main.scale : 1
}
// OUTPUT 2
func dropShadow(color: UIColor, opacity: Float = 0.5, offSet: CGSize, radius: CGFloat = 1, scale: Bool = true) {
layer.masksToBounds = false
layer.shadowColor = color.cgColor
layer.shadowOpacity = opacity
layer.shadowOffset = offSet
layer.shadowRadius = radius
layer.shadowPath = UIBezierPath(rect: self.bounds).cgPath
layer.shouldRasterize = true
layer.rasterizationScale = scale ? UIScreen.main.scale : 1
}
}
ノート : もしあなたが を渡さなければ を渡さなかった場合、デフォルトで scale 引数は true になります。関数内の任意のパラメータに対してデフォルト値を定義するには、そのパラメータの型の後に値を代入します。デフォルト値が定義されている場合、関数を呼び出す際にそのパラメータを省略することができます。
OUTPUT 1:
shadowView.dropShadow()
OUTPUT 2:
shadowView.dropShadow(color: .red, opacity: 1, offSet: CGSize(width: -1, height: 1), radius: 3, scale: true)
layer.shouldRasterize = true
は、影を静止させ、初期状態のUIView
. ですから、私はlayer.shouldRasterize = true
の中にあるビューのような動的なレイアウトではUITableViewCell
.
関連
-
[エラー処理】iOSのエラー、アーキテクチャx86_64の未定義シンボルについて
-
制御が非ボイド関数の終了に達する
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] UIViewに角丸をつける
-
[解決済み] SwiftでUIAlertViewを作成するにはどうしたらいいですか?
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] UIViewの角丸とドロップシャドウ?
-
[解決済み] コア・データ エンティティの全インスタンスを削除する最短の方法
-
[解決済み] UIViewの下に影を描くには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
iOS classic error Undefined symbols for architecture XXX:
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
[解決済み] 文字列の長さを取得する
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] UITableViewCell、スワイプ時に削除ボタンを表示させる
-
[解決済み] SwiftでUIAlertViewを作成するにはどうしたらいいですか?
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] CocoaPodsの最新バージョンにアップデートしますか?
-
[解決済み] iOSアプリをApple Developer Programや脱獄せずにデバイス上でテストすることができます。
-
[解決済み] iPhoneでナビゲーションバーを1ページ目だけ非表示にする