最近寫項目總是用到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文字,可以修改文字大小和顔色
檔案下載下傳