调整UIView的大小会隐藏子视图

时间:2015-11-08 02:50:21

标签: ios objective-c uitableview uiview nslayoutconstraint

我有一个视图控制器,其视图不会填满屏幕并且边缘周围有透明度。在所述视图中,我有一个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;
                         }
                     }];
}

这是故事板中的用户界面:

IB Image

这是调整大小后的样子:

Broken UI in device

0 个答案:

没有答案