iPhone X 屏幕适配,没有铺满屏幕的情况

iPhone X 屏幕适配,没有铺满屏幕的情况_第1张图片
图片.png

在适配iPhone X时,发现iPhone X的屏幕上下没有铺满。新建的项目,都是铺满屏幕的。
因为启动页用的是Launch Image Source,而用不到Launch Screen File 所以把LaunchScreen.storyboard 给删除了,Info.plist 里面也就没有了 Launch screen interface file base name 。
解决方法是,在Info.plist 里面增加 Launch screen interface file base name 就可以了。
注意:只是增加一个 key。Launch screen interface file base name
如果增加了key,还是不行的话,添加一张iPhone X屏幕分辨率的启动图也能达到一样的效果。


图片.png

增加完的效果是,我们要注意的是,在iPhone X 里面,状态栏是不能隐藏的。如果隐藏了,会挡住界面,需要自己再去做适配。
下面是适配iPhone X用到的宏

    // UIScreen width.
    #define  MM_ScreenWidth   [UIScreen mainScreen].bounds.size.width
    // UIScreen height.
    #define  MM_ScreenHeight  [UIScreen mainScreen].bounds.size.height
    // iPhone X 
    #define MM_iPhoneX (LL_ScreenWidth == 375.f && LL_ScreenHeight == 812.f ? YES : NO)
    // Status bar height.
    #define  MM_StatusBarHeight      (LL_iPhoneX ? 44.f : 20.f)
    // Navigation bar height.
    #define  MM_NavigationBarHeight  44.f
    // Tabbar height.
    #define  MM_TabbarHeight         (LL_iPhoneX ? (49.f+34.f) : 49.f)
    // Tabbar safe bottom margin.
    #define  MML_TabbarSafeBottomMargin         (LL_iPhoneX ? 34.f : 0.f)
    // Status bar & navigation bar height.
    #define  MM_StatusBarAndNavigationBarHeight  (LL_iPhoneX ? 88.f : 64.f)
    #define MM_ViewSafeAreInsets(view) ({UIEdgeInsets insets; if(@available(iOS 11.0, *)) {insets = view.safeAreaInsets;} else {insets = UIEdgeInsetsZero;} insets;})

你可能感兴趣的:(iPhone X 屏幕适配,没有铺满屏幕的情况)