美文网首页
ios swift UITextView高度自适应

ios swift UITextView高度自适应

作者: Code人生 | 来源:发表于2018-02-28 13:22 被阅读0次

    在ios开发中,用到多行输入时一般都会用到UITextView。常见的比如说聊天输入框,评论输入框等,当用户输入多内容时,我们希望高度能根据用户输入的内容扩大而扩大。其实实现这个功能也不是很难,只需要自定义一个类并继承UITextView,然后实现其代理UITextViewDeletage,重写textViewDidChange,只需要在这个方法中进行处理即可。下面开始撸代码:

    1.先创建一个类:MyTextView

    class MyTextView: UITextView,UITextViewDelegate {

        var maxHeight:CGFloat=60//定义最大高度

        override init(frame:CGRect, textContainer:NSTextContainer?) {

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

            //textview的一些设置

            self.delegate=self

            self.layer.borderColor = UIColor.lightGray.cgColor

            self.layer.borderWidth=0.5

            self.layer.cornerRadius=5

            self.layer.masksToBounds=true

        }

        required init?(coder aDecoder:NSCoder) {

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

        }

        func  textViewDidChange(_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.开始测试:

    class  ViewController:UIViewController{

        override  func  viewDidLoad() {

            super.viewDidLoad()

            //测试自定义的TextView

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

            self.view.addSubview(textview)

        }

    }

    3.运行结果:

    总结:UITextView高度自适应的实现就到这里了,如果有什么问题欢迎评论、留言,谢谢!

    demo下载地址:MyTextViewDemo

    博客园地址:猿哥爱码

    相关文章

      网友评论

          本文标题:ios swift UITextView高度自适应

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