在这里,swift开发ios将是首选iOS学习笔记iOS Developer

带placehoderLabel的UITextView

2016-07-07  本文已影响154人  icbbetter

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)
 }
 
}



上一篇 下一篇

猜你喜欢

热点阅读