问题
导航栏上移出现问题缘由
一、当前界面的底部视图不是 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;
}
网友评论