我有一个视图控制器,其视图不会填满屏幕并且边缘周围有透明度。在所述视图中,我有一个tableview,一些按钮和一个文本字段。
我将所有控件附加到视图底部并附带约束,并将tableview附加到顶部。
当设备处于横向/纵向模式时,所有内容都会调整得很好,但是当键盘出现时我手动调整尺寸时,视图的底部会向上移动并覆盖最低的元素。
调整大小/动画代码:
- (void)keyboardDidShow:(NSNotification *)notification {
//Stuff to get keyboard frames
void (^animations)() = ^() {
CGRect mainViewFrame = self.mainView.frame;
CGRect tableViewFrame = self.tableView.frame;
tableViewFrame.size.height = tableViewFrame.size.height - 50;
mainViewFrame.size.height = mainViewFrame.size.height - 50;
CGFloat paddingOffset = self.view.frame.size.height - self.mainView.frame.origin.y - self.mainView.frame.size.height;
mainViewFrame.origin.y = (mainViewFrame.origin.y - keyboardEndFrame.size.height + paddingOffset - 8);
self.mainView.frame = mainViewFrame;
[self.tableView setNeedsLayout];
[self.mainView setNeedsLayout];
};
[UIView animateWithDuration:animationDuration
delay:0.0
options:(animationCurve << 16)
animations:animations
completion:^(BOOL finished){
if (finished) {
NSLog(@"Finished animating");
self.acceptBottomConstraint.constant = 5;
self.cancelBottomConstraint.constant = 5;
}
}];
}
这是故事板中的用户界面:
这是调整大小后的样子: