zoukankan      html  css  js  c++  java
  • 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(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,200,height:30))

            self.view.addSubview(textview)

        }

    }

    3.运行结果:


     

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

    demo下载地址:MyTextViewDemo

    简书地址: Code人生

  • 相关阅读:
    spring data jpa @index无法创建索引
    vue form绑定数据后只能显示不能编辑
    vue dialog每次打开会展示上一次数据(转载)
    vue-i18n突然所有的都解析不出来了
    sass计算高度
    动态指定日志路径(logback)
    Springboot配置文件内容加密
    java环境变量修改后不生效
    SOAP和REST
    Git配置别名
  • 原文地址:https://www.cnblogs.com/zzjbk/p/8483114.html
Copyright © 2011-2022 走看看