内容简介:很久没写技术文章里,本篇记录了一下一个键盘弹出的小细节动画,像微信一样流程上图
很久没写技术文章里,本篇记录了一下一个键盘弹出的小细节动画,像微信一样流程
上图
动画细节代码
细节核心主要是通知中的一些key
- 动画时长
- 动画的出现方式
…
下面的通知是接收 键盘将要出现的通知 UIKeyboardWillShowNotification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveKeyboardShowNotification:) name:UIKeyboardWillShowNotification object:nil];
然后是实现的核心代码
- (void)didReceiveKeyboardShowNotification:(NSNotification *)noti { NSDictionary *userInfo = noti.userInfo; NSTimeInterval animationDuration; UIViewAnimationCurve animationCurve; CGRect keyboardFrame; [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve]; [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration]; [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardFrame]; UIViewAnimationOptions animationOptions = animationCurve << 16; self.bottomConstrains.offset = -CGRectGetHeight(keyboardFrame); [UIView animateWithDuration:animationDuration delay:0. options:animationOptions animations:^{ [self.view setNeedsUpdateConstraints]; [self.view layoutIfNeeded]; } completion:^(BOOL finished) { }]; }
self.bottomConstrains.offset = -CGRectGetHeight(keyboardFrame); 是我写的约束 详细请参考demo
键盘消失也是一样的 UIKeyboardWillHideNotification
接收这个key
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveKeyboardHideNotification:) name:UIKeyboardWillHideNotification object:nil];
消失的时候 把约束偏移量设置 0
即可
- (void)didReceiveKeyboardHideNotification:(NSNotification *)noti { NSDictionary *userInfo = noti.userInfo; NSTimeInterval animationDuration; UIViewAnimationCurve animationCurve; CGRect keyboardFrame; [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve]; [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration]; [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardFrame]; UIViewAnimationOptions animationOptions = animationCurve << 16; self.bottomConstrains.offset = 0; [UIView animateWithDuration:animationDuration delay:0. options:animationOptions animations:^{ [self.view setNeedsUpdateConstraints]; [self.view layoutIfNeeded]; } completion:^(BOOL finished) { }]; }
self.bottomConstrains.offset = 0; //设置偏移量会原来位置
利用Masonry做的动画
最后 别忘记移除通知
- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; }
总结
键盘弹出这个微小的细节 很容易被大家忽视,写这篇文章是为了记录知识和技巧,希望各位多多指教
全文完
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Android获取软键盘的高度、键盘的打开与关闭、监听键盘处于打开还是关闭状态
- ios 最新系统bug与解决——微信公众号中弹出键盘再收起时,原虚拟键盘位点击
- Swift关闭UITextView键盘
- ios 最新系统bug与解决——微信公众号中弹出键盘再收起时,原虚拟键盘位点击事件无效
- Swift自定义表情键盘+录音
- Android 软键盘踩坑记
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Art of Computer Programming, Volumes 1-3 Boxed Set
Donald E. Knuth / Addison-Wesley Professional / 1998-10-15 / USD 199.99
This multivolume work is widely recognized as the definitive description of classical computer science. The first three volumes have for decades been an invaluable resource in programming theory and p......一起来看看 《The Art of Computer Programming, Volumes 1-3 Boxed Set》 这本书的介绍吧!
HTML 编码/解码
HTML 编码/解码
URL 编码/解码
URL 编码/解码