[解決済み] UIViewの上側だけにボーダーを追加する方法
2022-04-25 07:48:19
質問
タイトルに質問があります。
上下左右、どの面にもボーダーをつける方法がわかりません。
layer.border
は、ビュー全体のボーダーを描画します。
解決方法は?
をサブクラス化することを検討しています。
UIView
をオーバーライドし
drawRect
は、ここではオーバーキルです。の拡張機能を追加してはいかがでしょうか?
UIView
とボーダーサブビューを追加してください。
@discardableResult
func addBorders(edges: UIRectEdge,
color: UIColor,
inset: CGFloat = 0.0,
thickness: CGFloat = 1.0) -> [UIView] {
var borders = [UIView]()
@discardableResult
func addBorder(formats: String...) -> UIView {
let border = UIView(frame: .zero)
border.backgroundColor = color
border.translatesAutoresizingMaskIntoConstraints = false
addSubview(border)
addConstraints(formats.flatMap {
NSLayoutConstraint.constraints(withVisualFormat: $0,
options: [],
metrics: ["inset": inset, "thickness": thickness],
views: ["border": border]) })
borders.append(border)
return border
}
if edges.contains(.top) || edges.contains(.all) {
addBorder(formats: "V:|-0-[border(==thickness)]", "H:|-inset-[border]-inset-|")
}
if edges.contains(.bottom) || edges.contains(.all) {
addBorder(formats: "V:[border(==thickness)]-0-|", "H:|-inset-[border]-inset-|")
}
if edges.contains(.left) || edges.contains(.all) {
addBorder(formats: "V:|-inset-[border]-inset-|", "H:|-0-[border(==thickness)]")
}
if edges.contains(.right) || edges.contains(.all) {
addBorder(formats: "V:|-inset-[border]-inset-|", "H:[border(==thickness)]-0-|")
}
return borders
}
// Usage:
view.addBorder(edges: [.all]) // All with default arguments
view.addBorder(edges: [.top], color: .green) // Just Top, green, default thickness
view.addBorder(edges: [.left, .right, .bottom], color: .red, thickness: 3) // All except Top, red, thickness 3
このコードを使えば、サブクラスに縛られることなく
UIView
- あなたのプロジェクトで再利用可能な、そして他のどんなものでも。メソッドに他の引数を渡して、他の色や幅を定義することができます。多くのオプションがあります。
関連
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] Xcode 4で「既存のフレームワークを追加」する方法は?
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] ボーダーをdivの内側、端に配置しない
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?
-
[解決済み] Android Viewの上下にボーダーを簡単に追加する方法はありますか?
-
[解決済み】iOSアプリの名前を変更する方法は?
-
[解決済み】iPhoneのUIViewのzインデックスを設定する方法は?
-
[解決済み] UIViewのbottom border?
最新
-
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 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] iOS 13 のフルスクリーンでモーダルを表示する
-
[解決済み] Unwind segueは何に使うのか、どう使うのか?
-
[解決済み] UIViewに角丸をつける
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] UIButtonのタイトルを左揃えにするにはどうしたらよいですか?
-
[解決済み] アプリのプレビュー用にiOSシミュレータのビデオをキャプチャー
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] UITextBorderStyleNoneを使用してUITextFieldのパディングを設定する
-
[解決済み] UIViewのbottom border?