语音或视频聊天导致页面整体下移bug

原因是当录音的时候,状态栏高度由20变成了40,导致controller整体下移了20

小知识,controller的self.view 即controller显示的大小,通过改变self.view大小 就能控制controller的大小

- (void)viewWillLayoutSubviews{
    [super viewWillLayoutSubviews];
    CGRect frame = self.view.frame;
    frame.size.height -= 20;
    //    frame.origin.y += 20;
    self.view.frame = frame;
    self.view.clipsToBounds = YES;
}
  1. 监听状态栏变化的通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changeFrame) name:UIApplicationWillChangeStatusBarFrameNotification object:nil];
  1. 当状态栏改变时更新controller的self.view大小
    self.oldHeight = [UIScreen mainScreen].bounds.size.height;
- (void)changeFrame{
    CGRect frame = self.view.frame;
    self.view.clipsToBounds = YES;
    CGRect statusBarRect = [[UIApplication sharedApplication] statusBarFrame];
    if (statusBarRect.size.height == 40) {
        frame.size.height = self.oldHeight - 20 - frame.origin.y;
    }
    if (statusBarRect.size.height == 20){
        frame.origin.y = 0;
        frame.size.height = self.oldHeight;
    }
    self.view.frame = frame;
}

项目地址

你可能需要这个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.NSTimer //暂停if ([timer isValid]) {[timer setFireDate:[N...
    俊月阅读 1,373评论 0 0
  • iphone开发笔记 退回输入键盘 - (BOOL) textFieldShouldReturn:(id)text...
    爱易寒曲易散阅读 631评论 0 1
  • 1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa阅读 1,144评论 1 6
  • 愿望:今天下午6.00到7.00阅读一个小时 结果: 沉浸于书中会感到快乐 放松自己,释放压力 积累知识,即将走上...
    再见你好_8260阅读 96评论 0 0
  • 今天早上,一打开手机,朋友圈被老家地震的消息刷屏了。朋友们纷纷表示有震感。 于是,我打开电脑搜索了下“涟源 地震”...
    红色木马阅读 292评论 1 1