xcode6开始,写界面基本都是用size classes +layoutContraint了,对于一般的静态页面,使用constrain简单快速还能支持横竖屏切换,high到爆!
使用constraint实现的页面在viewDidAppear之后,想做什么动画也可以,虽然有约束在,但是只要不去调用setNeedUpdateConstraint就没问题。
本着这样的思想,我用约束实现了带有输入框的约束,在键盘弹起的时候,使用UIView级别的动画跟这键盘同步。
先上storyboard拖出来的界面:
再来添加viewController.m中的相关方法:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"viewWillAppear");
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self];
NSLog(@"viewWillDisappear");
}
实现键盘方法:
-(void)keyboardWillChangeFrame:(NSNotification*)noti
{
NSLog(@"userInfo = %@",noti.userInfo);
CGFloat y = CGRectGetMaxY(self.textField.bounds);
CGRect keyRect = [noti.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
if (y == CGRectGetMinY(keyRect)) {
NSLog(@"return....");
return;
}
[UIView animateWithDuration:[noti.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue]
animations:^{
self.textField.frame = CGRect