textview - lidaoyuan/Notes GitHub Wiki

class TestTextView: UITextView, UITextViewDelegate {

var maxHeight: CGFloat = 60

override init(frame: CGRect, textContainer: NSTextContainer?) {
    super.init(frame: frame, textContainer: textContainer)
    self.delegate = self
    self.layer.borderColor = UIColor.lightGray.cgColor
    self.layer.borderWidth = 0.5
    self.layer.cornerRadius = 5
    self.layer.masksToBounds = true
    self.font = UIFont.systemFont(ofSize: 18)
}

func textViewDidChange(_ textView: UITextView) {
    // 获取frame值
    
    let frame = textView.frame
    
    // 定义一个constrainSize值用于计算textview的高度
    
    let constrainSize = CGSize(width: frame.size.width, height: CGFloat.greatestFiniteMagnitude)
    
    // 获取textview的真实高度
    
    var size = textView.sizeThatFits(constrainSize)
    
    // 如果textview的高度大于最大高度高度就为最大高度并可以滚动,否则不能滚动
    
    if size.height >= maxHeight {
        
        size.height = maxHeight
        
        textView.isScrollEnabled = true
        
    } else {
        
        textView.isScrollEnabled = false
        
    }
    
    // 重新设置textview的高度
    textView.frame.size.height = size.height
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}