美文网首页
热点开启与否,界面统一适配

热点开启与否,界面统一适配

作者: 最晴天 | 来源:发表于2017-12-11 16:47 被阅读17次
    iPhone热点开启后,并有设备关联时,状态栏会增加20px,如下图一: IMG_6358.png

    此时,viewController的self.view会自动下移20px,从原来的屏幕左上角(0,0),下移到(0,20),因此界面适配就需要考虑这一点:
    1)界面适配尽量使用相对布局
    2)可借助通知UIApplicationDidChangeStatusBarFrameNotification,来监测状态栏的变化。

    下面说说,我个人在项目中关于界面适配的做法。
    考虑大多界面都是需要导航栏的,而个别界面则从原点开始,如下图二:


    IMG_6359.png

    故而,我使用了BaseViewController,在base中,设置navigationController.navigationBar.translucent为true,同时在非iOS 11.0的系统下,关闭self.automaticallyAdjustsScrollViewInsets
    如此,确保self.view从(0,0)位置开始布局,而非导航存在时的(0,64)位置开始。而后,创建了统一的gmBgV,使得gmBgV的位置从导航的左下角位置开始,代码如下:

    - (UIView *)gmBgV{
        if (_gmBgV == nil) {
            _gmBgV = [[UIView alloc] init];
            _gmBgV.backgroundColor = [UIColor whiteColor];
            [self.view addSubview:_gmBgV];
            [self.view sendSubviewToBack:_gmBgV];
            [_gmBgV mas_makeConstraints:^(MASConstraintMaker *make) {
                make.left.right.equalTo(self.view);
                make.top.equalTo(self.view).offset(HHiPhoneX?88:64);
                make.bottom.equalTo(self.view).offset(self.isPushed?-HHSafeAreaBottomHeight:-HHSafeAreaBottomHeight-54);
                
            }];
        }    
        return _gmBgV;
    }
    

    在导航存在的页面,则将view添加在self.gmBgV上,而如图二的页面,则直接添加在self.View上。

    使用相对布局,热点开启与关闭,界面不再需要另行适配。

    相关文章

      网友评论

          本文标题:热点开启与否,界面统一适配

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