在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在ios开发中,用到多行输入时一般都会用到UITextView。常见的比如说聊天输入框,评论输入框等,当用户输入多内容时,我们希望高度能根据用户输入的内容扩大而扩大。其实实现这个功能也不是很难,只需要自定义一个类并继承UITextView,然后实现其代理UITextViewDeletage,重写textViewDidChange,只需要在这个方法中进行处理即可。下面开始撸代码: 1.先创建一个类:MyTextView class MyTextView: UITextView,UITextViewDelegate { varmaxHeight:CGFloat=60//定义最大高度 overrideinit(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 }
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人生
|
请发表评论