天天看點

自定義的TextView,帶有placeholder

最近寫項目總是用到textView,無奈系統textView控件不像textField一樣有占位符,是以隻好自己自定義了一個帶有占位符的textView,可以在storyboard中顯示占位符屬性,希望可以幫到大家!(swift)

@IBDesignable class JHTextView: UIView , UITextViewDelegate {

    @IBOutlet var contentView: UIView!
    @IBOutlet var textView: UITextView!
    /** 占位文字label */
    @IBOutlet private var placeholderLabel: UILabel!
    /** 占位文字 */
    @IBInspectable var placeholder : String? {
        get {
            return placeholderLabel.text
        }
        set {
            self.placeholderLabel.text = newValue
        }
    }
    /** 占位文字 顔色 */
    @IBInspectable var placeholderColor : UIColor = UIColor.lightGrayColor() {
        didSet {
            self.placeholderLabel.textColor = placeholderColor
        }
    }
    /** 占位文字 字型大小 */
    @IBInspectable var placeholderFont : CGFloat =  {
        didSet {
            self.placeholderLabel.font = UIFont.systemFontOfSize(placeholderFont)
        }
    }

    func loadViewFfromNib() -> UIView {
        let bundle = NSBundle(forClass: self.dynamicType)
        let nib = UINib(nibName: String(self.dynamicType), bundle: bundle)
        let view = nib.instantiateWithOwner(self, options: nil)[] as! UIView
        self.textView.delegate = self
        return view
    }

    func setupSubviews() {
        contentView = loadViewFfromNib()
        contentView.frame = bounds
        addSubview(contentView)
    }

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

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupSubviews()
    }
    /** UITextViewDelegate */
    func textViewDidBeginEditing(textView: UITextView) {
        self.placeholderLabel.hidden = true
    }

    func textViewDidEndEditing(textView: UITextView) {
        self.placeholderLabel.hidden = textView.text != ""
    }


}
           

在storyboard中隻需要建立一個view與其關聯,就能自定義textView的placeholder文字,可以修改文字大小和顔色

檔案下載下傳