こんにちは sohnishi です。
今回はSwiftについて見ていきます。
UITextFieldのcornerRadiusやborderWidth、さらにpaddingの設定など、
Storyboardで設定出来たら便利ですよね。
やってみたいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
import UIKit @IBDesignable class CustomTextField: UITextField { // 角丸 @IBInspectable var cornerRadius: CGFloat = 0.0 // 枠 @IBInspectable var borderColor: UIColor = UIColor.clear @IBInspectable var borderWidth: CGFloat = 0.0 // Padding @IBInspectable var paddingTop: CGFloat = 0.0 @IBInspectable var paddingRight: CGFloat = 0.0 @IBInspectable var paddingBottom: CGFloat = 0.0 @IBInspectable var paddingLeft: CGFloat = 0.0 override func draw(_ rect: CGRect) { // 角丸 self.layer.cornerRadius = cornerRadius self.clipsToBounds = (cornerRadius > 0) // 枠線 self.layer.borderColor = borderColor.cgColor self.layer.borderWidth = borderWidth super.draw(rect) } override func textRect(forBounds bounds: CGRect) -> CGRect { let padding = UIEdgeInsets(top: paddingTop, left: paddingLeft, bottom: paddingBottom, right: paddingRight) return bounds.inset(by: padding) } override func placeholderRect(forBounds bounds: CGRect) -> CGRect { let padding = UIEdgeInsets(top: paddingTop, left: paddingLeft, bottom: paddingBottom, right: paddingRight) return bounds.inset(by: padding) } override func editingRect(forBounds bounds: CGRect) -> CGRect { let padding = UIEdgeInsets(top: paddingTop, left: paddingLeft, bottom: paddingBottom, right: paddingRight) return bounds.inset(by: padding) } } |
UITextFieldクラスをサブクラスに持ったCustomTextFieldクラスを作ります。
クラス名記述の先頭に@IBDesignableと記述することを忘れないでください。
設定したい値を変数定義し、先頭に@IBInspectableと記述します。
そうすることで、Storyboardでプロパティの設定が可能になります。
最後に、
override func draw(_ rect: CGRect) {}内でプロパティを設定することで完了です。
以上、sohnishiでした。