使用UITextView实现随着输入自动改变输入框的高度

效果图:


1.gif

只需要在UITextView的代理方法中,实现以下代码即可。

 /*
        1.sizeThatFit:会计算出控件的最优的size,但是不会立刻改变控件的大小
        2.sizeToFit:会计算出最优的size,并且会立刻修改控件的size为当前最优的size
     */
    //随着输入自动改变输入框的高度和位置
    func textViewDidChange(textView: UITextView){
    
        let fixedWidth = textView.frame.size.width
        
        let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
        //当最合适的高度大于现在的高度时,开始改变textView的frame,如果高度大于120了,就不在改变textView的frame了。
        if newSize.height > textView.frame.size.height && newSize.height < 120 {
            
            var newFrame = textView.frame
            newFrame.origin.y -= (newSize.height - newFrame.size.height)
            newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
           
            textView.frame = newFrame
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,274评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,135评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,597评论 4 61
  • 词:杨丹尼 可怜慈母,泪流尽,望断归途愁泣。 少小游儿,离十载,相见阿妈不识。 陋室穷空,楼台后院,桂树依还碧。 ...
    杨丹尼阅读 446评论 0 1
  • “哦,你是干导游的!” 每当我说自己是在旅行社工作,基本都会听到对方自以为是的说上面这么一句!然而,我并不是一名导...
    幽谷333阅读 749评论 0 0

友情链接更多精彩内容