ios swift UITextView高度自適應

在ios開發中,用到多行輸入時通常都會用到UITextView。常見的好比說聊天輸入框,評論輸入框等,當用戶輸入多內容時,咱們但願高度能根據用戶輸入的內容擴大而擴大。其實實現這個功能也不是很難,只須要自定義一個類並繼承UITextView,而後實現其代理UITextViewDeletage,重寫textViewDidChange,只須要在這個方法中進行處理便可。下面開始擼代碼:ios

1.先建立一個類:MyTextViewgit

class MyTextView: UITextView,UITextViewDelegate {github

    varmaxHeight:CGFloat=60//定義最大高度ide

    overrideinit(frame:CGRect, textContainer:NSTextContainer?) {測試

        super.init(frame: frame, textContainer: textContainer)ui

        //textview的一些設置spa

        self.delegate=self3d

        self.layer.borderColor = UIColor.lightGray.cgColor代理

        self.layer.borderWidth=0.5code

        self.layer.cornerRadius=5

        self.layer.masksToBounds=true

    }

 

    requiredinit?(coder aDecoder:NSCoder) {

        fatalError("init(coder:) has not been implemented")

    }

    functextViewDidChange(_textView:UITextView) {

        //獲取frame值

        letframe = textView.frame

        //定義一個constrainSize值用於計算textview的高度

        let constrainSize=CGSize(width:frame.size.width,height:CGFloat(MAXFLOAT))

        //獲取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

    }

}

2.開始測試:

classViewController:UIViewController{

    overridefuncviewDidLoad() {

        super.viewDidLoad()

        //測試自定義的TextView

        lettextview =MyTextView(frame:CGRect(x:20,y:100,width:200,height:30))

        self.view.addSubview(textview)

    }

}

3.運行結果:

 


 

 

總結:UITextView高度自適應的實現就到這裏了,若是有什麼問題歡迎評論、留言,謝謝!

demo下載地址:MyTextViewDemo

簡書地址: Code人生

相關文章
相關標籤/搜索