[Swift] 스토리 보드에서 속성 지정 가능한 UI 파트를 만드는 방법 (UITextField 확장)

개요



포커스시에 배경색이 바뀌는 UITextField를 만들어 보았습니다.
배경색은 스토리보드에서 지정할 수 있도록 합니다.

동작 이미지





개발 환경



Xcode7.3

코드



1. UITextField 확장 클래스 만들기



UITextField를 상속한 클래스를 만듭니다.

UITextFieldCustom.swift
import UIKit

@IBDesignable
class UITextFieldCustom: UITextField, UITextFieldDelegate {

    @IBInspectable var focusBkColor: UIColor?

    private var defaultBkColor: UIColor?

    func textFieldDidBeginEditing(textField: UITextField) {
        if focusBkColor == nil {
            print("Error: Set focusBkColor")
            return
        }
        defaultBkColor = self.backgroundColor
        self.backgroundColor = focusBkColor
    }

    func textFieldDidEndEditing(textField: UITextField) {
        self.backgroundColor = defaultBkColor
    }

}

2. 스토리 보드



UITextField를 배치하고 Identity Inspector의 Class에 위의 UITextField 확장 클래스를 지정합니다.


UITextField 확장 클래스의 코드에 @IBInspectable var focusBkColor: UIColor? 의 기술을 하는 것으로, Attribute Inspector 에 Focus Bk Color 라고 하는 프로퍼티이 출현합니다.

이 프로퍼티에서, 포커스시의 배경색을 지정할 수 있도록 해 보았습니다.

3. ViewController



ViewController.swift
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textFieldCustom1: UITextFieldCustom!
    @IBOutlet weak var textFieldCustom2: UITextFieldCustom!
    @IBOutlet weak var textFieldCustom3: UITextFieldCustom!

    override func viewDidLoad() {
        super.viewDidLoad()
        textFieldCustom1.delegate = textFieldCustom1
        textFieldCustom2.delegate = textFieldCustom2
        textFieldCustom3.delegate = textFieldCustom3
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

소스 파일

좋은 웹페이지 즐겨찾기