网站编辑工具,网站的费用多少,百度开网站需要多少钱,衣服搭配网站建设首先说一下思路#xff1a;想要达到底部控件随着键盘的弹出而上移的效果#xff0c;那么我们必然需要的到键盘在弹出时的高度#xff0c;以及原点坐标。说白了我们的大致思路就是#xff0c;用view的高度#xff0d;键盘弹出时的高度#xff0c;得到的值就是底部控件与vi… 首先说一下思路想要达到底部控件随着键盘的弹出而上移的效果那么我们必然需要的到键盘在弹出时的高度以及原点坐标。说白了我们的大致思路就是用view的高度键盘弹出时的高度得到的值就是底部控件与view底部之间的距离在整个效果完成的过程中我们只需要调整控件与底部之间的距离即可而不是控件与键盘之间的距离这是一个思路。值得注意的是随着iphone6s以及plus的推出iphone的键盘高度再也不是传统固定的216而是动态增加的。所以我要要得到键盘的高度及原点坐标也就是fram这就需要用通知对键盘实施监听。当然还有一种思路也是大同小异用通知监听键盘frame然后得到键盘的Y值和你的控件的最大Y值比较如果键盘的frame的y值小于你控件最大的y值就让你的ui控件向上移动。 下面就来具体看看如何实现 1.首先我们在storyboard中找到这个底部控件outLayout的bottom约束也就是找到这个控件与view底部的约束距离如图 找到后将这个约束在.m中关联一个输出口这样我们就得到一个全局的NSLayoutConstraint属性来控制这个控件的constraint如图 2.最重要的一步我们来完成实现view底部控件随着键盘的弹出而上移的效果的方法 -(void)keyboardAppear:(NSNotification *)aNotification
{NSDictionary * userInfo aNotification.userInfo;CGRect frameOfKeyboard [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];CGRect frame self.view.frame;CGFloat height frame.size.height - frameOfKeyboard.origin.y 64;//加64是因为存在navigation导致view本身就整体下移了64个单位self.bottomSpacingConstraint.constant height;
}上面这个方法中的思路我来解释一下首先我们声明一个NSDictionary来储存aNotification中的userInfo,可以简单地说aNotification中储存着这个键盘中的所有被监听的属性信息具体有什么内容可以自己讲其打印出来查看。然后我们再分别获取到键盘和view的frame最重要的地方来了也是整个方法的核心思路就是用view的高度减去键盘的y值那么得到的就是键盘的最上面的点和view底部的间距这也就是我们想要得到的控件上移时与view底部的距离由于我们在storyboard中设置了outLayout的底部约束所以只要将我们最开始声明的全局NSLayoutConstraint属性也就是底部约束的constant重新赋值成我们得到的间距就完成了这种效果的生成条件。 3.完成上述步骤后我们在viewDidLoad中声明如下两个通知如下 //键盘弹出时
[[NSNotificationCenter defaultCenter] addObserver:self selector:selector(keyboardAppear:) name:UIKeyboardWillShowNotification object:nil];
//键盘消失时
[[NSNotificationCenter defaultCenter] addObserver:self selector:selector(keyboardAppear:) name:UIKeyboardWillHideNotification object:nil];在键盘弹出时我们调用keyboardAppear方法由于键盘弹出我们得到的是弹出的键盘的y与view底部的间距当键盘撤销时我们得到的同样是撤销后的键盘的y也就是0因为已经消失了高度为0与view底部的间距。 我写这些博客的目的是希望大家看了之后能得到一些思路上的启发而不是单纯的机械记方法和写代码程序是靠思路去创造的望诸君共勉。 最后我们来看一下运行后的效果: