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人生

相关文章
相关标签/搜索