ios swift UITextView高度自适应
在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人生
ios swift UITextView高度自适应的更多相关文章
- iOS Dev (59) 高度自适应的UITextView
iOS Dev (59) 高度自适应的UITextView 作者:阿锐 地址:http://blog.csdn.net/prevention - 例如以下 _inputTextView 为一个 UIT ...
- SnapKit swift实现高度自适应的新浪微博布局
SnapKit swift版的自动布局框架,第一次使用感觉还不错. SnapKit是一个优秀的第三方自适应布局库,它可以让iOS.OS X应用更简单地实现自动布局(Auto Layout).GtiHu ...
- iOS开发之多种Cell高度自适应实现方案的UI流畅度分析
本篇博客的主题是关于UI操作流畅度优化的一篇博客,我们以TableView中填充多个根据内容自适应高度的Cell来作为本篇博客的使用场景.当然Cell高度的自适应网上的解决方案是铺天盖地呢,今天我们的 ...
- iOS依据字符串计算UITextView高度
iOS计算字符串高度,有须要的朋友能够參考下. 方法一:ios7.0之前适用 /** @method 获取指定宽度width,字体大小fontSize,字符串value的高度 @param value ...
- 转:iOS开发之多种Cell高度自适应实现方案的UI流畅度分析
本篇博客的主题是关于UI操作流畅度优化的一篇博客,我们以TableView中填充多个根据内容自适应高度的Cell来作为本篇博客的使用场景.当然Cell高度的自适应网上的解决方案是铺天盖地呢,今天我们的 ...
- [Swift通天遁地]二、表格表单-(3)在表格中嵌套另一个表格并使Cell的高度自适应
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- iOS UILable高度自适应
适用于iOS6以后 NSString *tip = @"UILable高度自适应,UILable高度自适应,UILable高度自适应"; UILabel label_2 = [[U ...
- iOS 开发中单元格cell高度自适应
高度自适应分下面两种情况 1.用代码自定义的cell 用代码自定义的cell,cell高度自定义需要我们手动的去计算每个cell的字符串高度.然后返回对应的高度即可. 2.用XIB 或者 StoreB ...
- uitableviewcell高度自适应笔记
今天看了几篇uitableviewcell高度自适应的文章,大体分为两种方式. 第一种方式,cell里面有label,在cellforrow绘制的时候计算Label的可能高度,并且在此时重新计算cel ...
随机推荐
- IIS:配置参数
ylbtech-IIS:配置参数 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9.返回顶部 ...
- paramiko连接方式
链接方法: 方式一: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh. ...
- Solaris10如何确认DirectIO是否已经启用
对于Oracle而言,如果数据库存储在UFS文件系统上,启用DirectIO能够提高数据库性能.Oracle有个参数filesystemio_options可以控制数据库是否使用DirectIO. ...
- 新增线下、APP、公众号多处入口,小程序会再火起来么?
现在,大多数互联网创业者最缺的是流量,第二缺的是钱.之前开发者们追捧小程序的重要原因就是在于认为这可能是下一个微信公众号体量的流量入口,因为大家都想从微信的8亿多用户中收获自己的一部分用户. 近期部分 ...
- Oracle、SqlServer——临时表
一.oracle 1.概述: oracle数据库的临时表的特点: 临时表默认保存在TEMP中: 表结构一直存在,直到删除:即创建一次,永久使用: 不支持主外键. 可以索引临时表和在临时表基础上建立视图 ...
- Git中远程仓库的使用
1.查看当前的远程库 要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字.在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用 ...
- DAY7-面向对象之绑定方法与非绑定方法
一.类中定义的函数分成两大类 一:绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 类.boud_met ...
- [patl2-020]功夫传人
解题关键:dfs的简单应用,需要注意类型double与int #include<cstdio> #include<cstring> #include<algorithm& ...
- revit导出模型数据到sqlserver数据库
revit软件可以导出模型数据到sqlserver数据库,有时候,为了对模型做数据分析,需要导出模型的数据,下面总结一下导出过程: 首先在sqlserver中建立一个数据库,如:revit_wujin ...
- nginx负载均衡, 配置地址带端口
nginx.conf 配置如下: upstream wlcf.dev.api { server 127.0.0.1:8833; server 127.0.0.2:8833; } server { l ...