SwiftのUIKitで、コードでレイアウトをカスタムしたい時のやり方です。
UITextFieldをカスタムして、ボーダー(枠線)をカスタムした際に、何故か余白がなくなってしまいます。
何故なんですかね・・・
これを設定するための方法です。
class CustomTextField: UITextField {
// 余白(パディング)の値
let padding = UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8)
override init(frame: CGRect) {
super.init(frame: frame)
// 枠線の設定
self.layer.cornerRadius = 4.0
self.layer.masksToBounds = true
self.layer.borderWidth = 1.0
self.layer.borderColor = R.color.borderColor()?.cgColor
// R.Swiftを使用しているので、上記のようなカラー指定方法で書いています。
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
// 下記の3つのメソッドが必要。 ここで枠線の余白を設定している。
override func textRect(forBounds bounds: CGRect) -> CGRect {
return bounds.inset(by: padding)
}
override func placeholderRect(forBounds bounds: CGRect) -> CGRect {
return bounds.inset(by: padding)
}
override func editingRect(forBounds bounds: CGRect) -> CGRect {
return bounds.inset(by: padding)
}
}
このやり方で、UITextFieldの枠線をカスタムして、余白が消えるので、
設定しています。
他に良いやり方があれば教えてほしいです・・・ ・ω・
コメント