带placehoderLabel的UITextView

作者: icbbetter | 来源:发表于2016-07-07 23:44 被阅读154次
    
    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)
     }
     
    }
    
    
    
    

    相关文章

      网友评论

        本文标题:带placehoderLabel的UITextView

        本文链接:https://www.haomeiwen.com/subject/ijwljttx.html