回答:
はい、よく使いますが、このような質問にはすでに何度も回答がありました。
しかし、とにかくインターフェースビルダーで。次のようなユーザー定義のランタイム属性を追加する必要があります。
layer.masksToBounds Boolean YES
layer.cornerRadius Number {View's Width/2}
そして有効にする
Clips subviews
結果:
Error: Launch screens may not use user defined runtime attributes.
ようになります。LaunchScreenに丸い画像が必要な場合は、選択肢がないようです。
ユーザー定義のプロパティを使用して、ストーリーボードで実行できます。丸めたいビューを選択し、そのIDインスペクターを開きます。でランタイムユーザー定義の属性セクションに、次の2つのエントリを追加します。
layer.cornerRadius
、タイプ:数値、値:(任意の半径)layer.masksToBounds
、タイプ:ブール値、値:チェック済みQuartzKit
ビューの対応するクラスファイル(存在する場合)にインポートする必要があるかもしれませんが、それを行わなくても機能することを確認しました。結果は異なる場合があります。
編集:動的半径の例
extension UIView {
/// The ratio (from 0.0 to 1.0, inclusive) of the view's corner radius
/// to its width. For example, a 50% radius would be specified with
/// `cornerRadiusRatio = 0.5`.
@IBDesignable public var cornerRadiusRatio: CGFloat {
get {
return layer.cornerRadius / frame.width
}
set {
// Make sure that it's between 0.0 and 1.0. If not, restrict it
// to that range.
let normalizedRatio = max(0.0, min(1.0, newValue))
layer.cornerRadius = frame.width * normalizedRatio
}
}
}
これが遊び場で動作することを確認しました。
extension UIView {
@IBInspectable var cornerRadiusV: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidthV: CGFloat {
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
}
}
@IBInspectable var borderColorV: UIColor? {
get {
return UIColor(cgColor: layer.borderColor!)
}
set {
layer.borderColor = newValue?.cgColor
}
}
}
ストーリーボードにすべての変更を加えた後でも、Worapotの答えは私にはうまくいきません。
layer.cornerRadius = 10
layer.borderWidth = 1
layer.borderColor = UIColor.blue.cgColor
長い答え:
customUIView.layer.cornerRadius = 10
pcustomUIView.layer.borderWidth = 1
customUIView.layer.borderColor = UIColor.blue.cgColor