带placehoderLabel的UITextView


import UIKit

class CusTextView: UITextView {
 //可以在xib配置
 @IBInspectable var placeholde: String = "" {
  didSet {
   placehoderLabel.text = placeholde
   setNeedsLayout()
  }
 }

 
 private var placehoderLabel: UILabel = {
  let label = UILabel()
  label.numberOfLines = 0
  label.backgroundColor = UIColor.clearColor()
  label.textColor = UIColor.lightGrayColor()
  return label
 }()
 
 override func didMoveToSuperview() {
  super.didMoveToSuperview()
  contentMode = .TopLeft
  allowsEditingTextAttributes = true
  self.addSubview(placehoderLabel)
  NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(textDidChange), name: UITextViewTextDidChangeNotification, object: self)
 }
 
 func textDidChange() -> Void {
  
  placehoderLabel.hidden = hasText()
  
 }
 
 override func layoutSubviews() {
  super.layoutSubviews()
  placehoderLabel.left = 5
  placehoderLabel.top = 8
  placehoderLabel.width = width - 10
  placehoderLabel.height = (placeholde as NSString).heightForFont(UIFont.systemFontOfSize(17), width: placehoderLabel.width)
  
 }
 
 deinit {
  NSNotificationCenter.defaultCenter().removeObserver(self)
 }
 
}



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容