IQKeyboardManager和Masonry同时使用,导航栏上移问题

问题

导航栏上移

出现问题缘由

一、当前界面的底部视图不是 UITableView 或者UIScrollView
二、IQKeyboardManager和Masonry同时使用时,控件布局全部错乱。

解决方法

一、重写 loadView 方法 ,把 self.view 替换成 UIScrollView。
二、增加一个底部视图 backView ,在设置布局时,对 backView 约束时要添加make.width.height.mas_equalTo(self.view); 否则子视图布局的 make.right 失效。
三、子控件要全部放在添加的底部视图上,而不是self.view 。

#pragma mark - 重写loadView
-(void)loadView { 

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [scrollView setBackgroundColor:[UIColor grayColor]];
    AdjustsScrollViewInsets_NO(scrollView, self)
    self.view = scrollView;

}

#pragma mark - 布局
-(void)setSubLayout
{
    // backView 增加的一个底部视图
    [self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.mas_equalTo(self.view);
        make.width.height.mas_equalTo(self.view);
    }];
}


-(UIView *)backView
{
    if (!_backView) {
        _backView = [[UIView alloc]init];
        _backView.backgroundColor = CLEARCOLOR;
        [self.view addSubview:_backView];
    }
    return _backView;
}

你可能感兴趣的:(IQKeyboardManager和Masonry同时使用,导航栏上移问题)