美文网首页
通话或连热点的时候页面向下偏移

通话或连热点的时候页面向下偏移

作者: huicuihui | 来源:发表于2018-11-13 11:12 被阅读3次

    针对已经打开的页面

    1. 定义一个属性, 记录是否要更新frame。
      @property (nonatomic, assign)BOOL isUpdateFrame;
    2. viewDidLoad方法中添加观察者
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarChanged) name:UIApplicationWillChangeStatusBarFrameNotification object:nil];
    3. 观察者监听到变化之后 调用方法
    - (void)statusBarChanged {
        self.isUpdateFrame = YES;
    }
    
    1. viewDidLayoutSubviews方法中 修改子控件的frame 修改偏移影响的控件的frame。一般整体的控件是修改frame.size.height, 底部的是修改frame.origin.y。视具体情况而定。
    - (void)viewDidLayoutSubviews
    {
        [super viewDidLayoutSubviews];
        
        if (self.isUpdateFrame) {
            self.isUpdateFrame = NO;
            CGRect frame = self.wkWebview.frame;
            if ([[UIApplication sharedApplication] statusBarFrame].size.height == 40) {
                frame.size.height -= 20;
            } else {
                frame.size.height += 20;
            }
            self.wkWebview.frame = frame;
        }
    }
    

    针对新打开的页面

    1. 使用masnory或者其它的进行适配的没有这种问题
    2. 使用frame坐标的 屏幕高度使用宏定义
      iPhoneX等有刘海的屏幕手机不需要适配, 通话或连接热点等时状态栏高度不会变。只需要适配有home键的手机。
    #define kscreenheight  ([UIScreen mainScreen].bounds.size.height - ([[UIApplication sharedApplication] statusBarFrame].size.height == 40 ? 20 : 0))
    

    使用全局的 以后方便修改。

    相关文章

      网友评论

          本文标题:通话或连热点的时候页面向下偏移

          本文链接:https://www.haomeiwen.com/subject/xloozftx.html