恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

如何做一个跟随键盘丝滑移动的聊天输入框?UIViewController-KeyboardAnimation 配合 Auto Layout 实战

  • 首页
  • 资讯中心
  • /
  • 如何做一个跟随键盘丝滑移动的聊天输入框?UIViewController-KeyboardAnimation 配合 Auto Layout 实战

相关资讯

AI技术揭秘:Pre-Training到RLHF,掌握NLP算法的核心演进! 2026/8/27 14:24:48
AI遥感影像智能解译:多源数据融合与深度学习实战 2026/8/27 14:24:48
纯方位无源定位原理与Python实现:从数学建模到无人机编队应用 2026/8/27 14:19:48

最新资讯

10 分钟搞定 FanControl 风扇控制:从满箱轰鸣到安静无声的完整指南
电线杆目标检测实战:YOLO+VOC数据集解析与YOLOv8训练全流程
ErlangRT vs ERTS 深度对比:Rust版BEAM与C版虚拟机的5大关键差异
具身智能研发团队配置与技术架构:从核心班底看机器人开发全栈能力
4条命令本地跑起 d2s-editor D2R存档编辑器:一键99级,1000件装备库直接导入
制造业计件工资数字化转型:从效率黑洞到数据驱动的ICM实践

今日推荐

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用
LeetCode Hot100(51-60)算法精解与面试技巧
CRC校验实战:从模2除法到HJ212协议排错

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

如何做一个跟随键盘丝滑移动的聊天输入框?UIViewController-KeyboardAnimation 配合 Auto Layout 实战

发布时间:2026/8/27 14:24:48
如何做一个跟随键盘丝滑移动的聊天输入框?UIViewController-KeyboardAnimation 配合 Auto Layout 实战 如何做一个跟随键盘丝滑移动的聊天输入框UIViewController-KeyboardAnimation 配合 Auto Layout 实战【免费下载链接】UIViewController-KeyboardAnimationShowing/dismissing keyboard animation in UIViewController category.项目地址: https://gitcode.com/gh_mirrors/ui/UIViewController-KeyboardAnimationUIViewController-KeyboardAnimation 是一个轻量的 iOS 键盘动画分类Category它帮你在键盘弹出/收起的瞬间用系统一致的时长与曲线同步执行自定义动画几行代码就能实现「聊天输入框跟随键盘丝滑移动」的效果。本文带你从零理解它的原理并用 Auto Layout 实战搭出一个跟随键盘的输入框。痛点为什么键盘动画总写不对做过聊天 App 的同学都有体会键盘一弹出来输入框不是被挡住就是生硬地跳上去。自己监听UIKeyboardWillShowNotification时要手动从userInfo里取键盘高度、动画时长和曲线再包一层UIView动画——代码又长又容易漏动画时长/曲线没对齐输入框移动和键盘「不同步」看着就卡忘记解绑通知页面跳转后旧控制器还在响应键盘事件block 里直接捕获self形成循环引用导致内存泄漏。UIViewController-KeyboardAnimation 把这些「脏活」全部封装进了一个 UIViewController 分类里。项目速览4 个 API 搞定键盘动画整个库只有两个核心文件头文件UIViewControllerKeyboardAnimation.hAPI 声明与说明实现文件UIViewControllerKeyboardAnimation.m通知监听与动画封装对外提供 4 组关键 API覆盖了聊天页常见的全部需求API作用an_subscribeKeyboardWithAnimations:completion:订阅键盘弹出/收起执行主动画最常用an_subscribeKeyboardWithBeforeAnimations:animations:completion:多一个「动画开始前」回调适合做过渡效果an_subscribeKeyboardFrameChangesWithAnimations:响应键盘尺寸变化如横竖屏切换、输入法切换1.3 版本新增an_unsubscribeKeyboard解绑事件并清空 block防止串场每个动画 block 都会收到三个参数keyboardRect键盘最终 frame、duration动画时长、isShowing弹出还是收起。你只需要在自己的动画里改约束、调布局同步问题交给分类处理。原理揭秘系统通知 关联对象实现文件UIViewControllerKeyboardAnimation.m的核心逻辑非常透明注册通知订阅时向 NotificationCenter 注册UIKeyboardWillShowNotification/UIKeyboardWillHideNotification尺寸变化则注册UIKeyboardWillChangeFrameNotification解析通知从userInfo中提取键盘 frameUIKeyboardFrameEndUserInfoKey、曲线和时长执行动画用系统给的时长和曲线调用UIView animateWithDuration你的 block 在动画闭包内执行天然和键盘动画同步持有 block用 ObjC 运行时关联对象associated object把 block 挂在当前视图控制器上因此调用时要用weakify / strongify避免循环引用——头文件里也明确写了这条警告。想深入细节可以直接阅读 实现源码通知处理集中在an_keyboardWillShowHide:isShowing:方法中。实战3 步接入聊天输入框Auto Layout 版这是官方 README 推荐的经典做法也是最适合新手的路径。第 1 步安装依赖pod UIViewControllerKeyboardAnimation, ~ 1.3也可以直接克隆仓库后把*.{h,m}文件拷进工程git clone https://gitcode.com/gh_mirrors/ui/UIViewController-KeyboardAnimation第 2 步在 Interface Builder 里搭约束给输入框底部和 superview 底部之间创建一条 Auto Layout 约束Bottom Space并通过 IBOutlet 暴露给代码property (weak, nonatomic) IBOutlet NSLayoutConstraint *chatInputBottomSpace;第 3 步订阅键盘事件viewWillAppear是订阅的最佳位置viewWillDisappear是解绑的最佳位置// viewWillAppear 中订阅 [weakify(self)]; [self an_subscribeKeyboardWithAnimations:^(CGRect keyboardRect, NSTimeInterval duration, BOOL isShowing) { [strongify(self)]; self.chatInputBottomSpace.constant isShowing ? CGRectGetHeight(keyboardRect) : 0; [self.view layoutIfNeeded]; } completion:nil]; // viewWillDisappear 中解绑 [self an_unsubscribeKeyboard];就这么短。注意动画 block 内一定要调用layoutIfNeeded这是让约束变化参与当前动画帧的关键——分类只是提供了「舞台」布局刷新仍需你触发。进阶技巧让输入框体验更上一层楼用 before 回调做平滑过渡需要「先淡出、再上滑」这类复合效果时改用带 beforeAnimations 的 APIbefore block 在动画开始前执行适合设置标志位或启动过渡动画main block 负责改约束completion 在动画结束后回调可用来复位标志位。处理键盘尺寸动态变化横屏旋转、切换表情面板等场景下键盘高度会变但不会触发 show/hide。1.3 版本起可用an_subscribeKeyboardFrameChangesWithAnimations:监听UIKeyboardWillChangeFrameNotification并用an_unsubscribeKeyboardFrameChanges解绑。别忘了弱引用头文件中的警告原文block 会被视图控制器持有和所有 block 风格 API 一样请避免循环引用。养成weakify / strongifyReactiveCocoa或__weak/__strong的习惯即可彻底规避内存泄漏。上手 Demo跟着示例快速验证工程自带完整示例位于Demo/KeyboardAnimationDemo/目录核心逻辑在Demo/KeyboardAnimationDemo/ViewController.m的subscribeToKeyboard方法中它同时驱动了底部条上移tabBarBottomSpace约束和按钮位移动画buttonBottomSpace约束并切换背景色是观察「多约束同步动画」的好样本。布局则定义在Demo/KeyboardAnimationDemo/Base.lproj/Main.storyboard可以直接对照本文第 2 步的约束思路。小结一个分类、两个文件零侵入地接管 iOS 键盘动画的时序与曲线配合 Auto Layout 约束 layoutIfNeeded输入框即可与键盘同帧移动、丝滑跟手viewWillAppear订阅、viewWillDisappear解绑弱引用写 block三条纪律守住稳定性。如果你正在做聊天、评论或搜索页的键盘适配这套「分类 约束」的组合是成本极低、效果最稳的方案值得直接放进你的工具链。【免费下载链接】UIViewController-KeyboardAnimationShowing/dismissing keyboard animation in UIViewController category.项目地址: https://gitcode.com/gh_mirrors/ui/UIViewController-KeyboardAnimation创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号