问题显现,见图:

原因详解:
1.a界面隐藏了状态栏,b界面显示状态栏,左滑动,返回到a界面,此时观察发现滑动时,b界面整体上移了20px
解决方案:
定义个变量
@property (nonatomic, assign) BOOL isViewDidAppear;
- (void)viewWillAppear:(BOOL)animated{
self.isViewDidAppear = NO;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.isViewDidAppear = NO;
}
界面完全显示时,手动调用prefersStatusBarHidden方法,且强制更新隐藏状态栏状态
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.isViewDidAppear = YES;
[self prefersStatusBarHidden];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
[self setNeedsStatusBarAppearanceUpdate];
}
}
- (BOOL)prefersStatusBarHidden {
return self.isViewDidAppear;
}
网友评论