@Jou Email Weibo or Github
预热
#define IS_IPHONE_4 (IS_IPHONE && ([[UIScreen mainScreen] bounds].size.height == 480.0) && ((IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale == [UIScreen mainScreen].scale) || (!IS_OS_8_OR_LATER && ([[UIScreen mainScreen] bounds].size.height == 480.0)) ))
#define IS_IPHONE_5 (IS_IPHONE && ([[UIScreen mainScreen] bounds].size.height == 568.0) && ((IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale == [UIScreen mainScreen].scale) || (!IS_OS_8_OR_LATER && ([[UIScreen mainScreen] bounds].size.height == 568.0)) ))
#define IS_STANDARD_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale == [UIScreen mainScreen].scale)
#define IS_ZOOMED_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale > [UIScreen mainScreen].scale)
#define IS_STANDARD_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0)
#define IS_ZOOMED_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0 && IS_OS_8_OR_LATER && [UIScreen mainScreen].nativeScale < [UIScreen mainScreen].scale)
每次苹果革新,都随之来一阵痛苦。这次 iPhone X 适配肯定没有例外。
如果不想打开官方文档跳来跳去,关于iPhone X 适配我推荐这篇文章,Supporting iPhone X
。
过去的适配方案,不区分维度,会令人费解,比如上面贴的宏定义,当我想适配 5.5 英寸的屏幕,我会去判断IS_STANDARD_IPHONE_6_PLUS ,但是这其实代表了多种设备iPhone 6p/iPhone 6sp/iPhone7p/iPhone 8p。
所以,我的梦想是“iPhone 设备适配要针对场景区分维度”,不,也是“世界和平”。
适配的五个维度
0x0 System version
- @available(iOS XX, *)
0x1 Orientation
- landscape
- portrait
0x2 Screen scale
- x1
- x2 (retina)
- x3 (retina)
0x3 Inches
- 3.5
- 4.0
- 4.7
- 5.5
0x4 Machine
- iPhone 4/iPhone 4s (3.5 inches)
- iPhone 5/iPhone 5s/iPhone 5c/iPhone 5se (4.0 inches)
- iPhone 6/iPhone 6s/iPhone7/iPhone 8 (4.7 inches)
- iPhone 6p/iPhone 6sp/iPhone7p/iPhone 8p (5.5 inches)
- iPhone X (5.8 inches)
WISH LIST
ps 最近愈发感觉自己与技术路线走的愈发的远,也愈发的感觉,运营和产品上的积累是增量的,而技术的发展是断层式的迭代,导致很容易归零,沉淀下无用的积累。或许....我热爱的不是技术,而是这个行业。