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

2017-12-11  本文已影响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上。

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

上一篇 下一篇

猜你喜欢

热点阅读