iOS接下来要研究的知识点

iPhone X屏幕适配

2018-03-15  本文已影响35人  碧海云天V

前言

iPhone X出来后,屏幕顶部的齐刘海曾让许多人病垢,使用者看了会不爽,App开发者对这个齐刘海也深恶痛绝,还得重新做适配。不过,不得不承认iPhone X的全面屏是目前业界做的最好的,屏占比是最高的,再加上流畅简洁的iOS系统,让iPhone X的体验非常不错。

  作为一个App开发者当然也要对现有的App做适配,下面就说一下我是怎么适配的。

  如果用LaunchScreen.storyboard,那么就在其view上面放一些相对布局的控件,启动的时候就可以充满iPhone X的整个屏幕了。

image.png
  如果使用的是LaunchImage,那么需要添加一张尺寸为1125x2436的图片,否则在iPhone X上会出现上下两条黑边的现象。
image.png

  iPhoneX竖屏下,顶部为了适应齐刘海,状态栏高度由以前的20px变为了44px,底部为了适应上滑的Home条,苹果建议预留高度为34px的空白区域。


image.png

  iPhoneX横屏下,由于一边会有齐刘海的影响,左右分别设置边距为44px,同时底部为了适应上滑的Home条,设置距离为21px。


image.png
  iPhoneX每一段的高度
image.png
// 屏幕宽度
#define ScreenWidth [UIScreen mainScreen].bounds.size.width

// 屏幕高度
#define ScreenHeight [UIScreen mainScreen].bounds.size.height

// 判断是否为iPhone X 
#define IsiPhoneX (ScreenWidth == 375.f && ScreenHeight == 812.f ? YES : NO)
#define Is_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)

// 状态栏高度
#define StatusHeighe [[UIApplication sharedApplication] statusBarFrame].size.height

//导航栏高度
#define NaviBarHeight self.navigationController.navigationBar.frame.size.height

//状态栏和导航栏的高度
#define NaviBarStatusBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height+self.navigationController.navigationBar.frame.size.height)

//底部菜单栏高度
#define TabBarHeight self.tabBarController.tabBar.frame.size.height

//安全区
#define ViewSafeAreInsets(view) ({UIEdgeInsets insets; if(@available(iOS 11.0, *)) {insets = view.safeAreaInsets;} else {insets = UIEdgeInsetsZero;} insets;})

注:竖屏时底部间距为:34,横屏时为:21
  在没又做iPhone X屏幕适配之前,我在心中会默默的问候苹果的设计师一万遍,做了适配之后,我发现并没有想象中的那么多困难,需要改动的地方并不是很多,这要得益于苹果软件工程师给的调整方案相对简单,不过总的来说,苹果的硬件设计和软件设计在业界都是一流的,作为开发者,通过不断的学习和开发,能给用户良好的体验,还是值得的。
上一篇 下一篇

猜你喜欢

热点阅读