如果看到定义如下自定的宏:
#define iPhone6 CGSizeEqualToSize([UIScreen mainScreen].currentMode.size, CGSizeMake(750, 1334))
使用屏幕像素大小来定义设备版本可能不是好主意,因为当您的 iPhone6 处于显示缩放模式(可以在设置中更改)时,屏幕像素大小与 iPhone5 相同,为 640x1136。因此使用此宏是不正确的。
当您设计一个专门针对 iPhone6 的界面时,您不需要知道它实际上是一台 iPhone6,因为您需要的信息是屏幕分辨率。
这是解决方案:
typedef NS_ENUM(NSInteger, UIScreenDisplayResolution) {
UIScreenDisplayResolutionUndefined,
// iPhone (includes iPod Touch)
UIScreenDisplayResolutionPixel320x480, // older type
UIScreenDisplayResolutionPixel640x960, // 4, 4s
UIScreenDisplayResolutionPixel640x1136, // 5, 5s, 6(display zoom), 6s(display zoom), SE 1
UIScreenDisplayResolutionPixel750x1334, // 6, 6s
UIScreenDisplayResolutionPixel1125x2001, // 6+(display zoom), 6s+(display zoom)
UIScreenDisplayResolutionPixel1242x2208, // 6+, 6s+
// iPad
UIScreenDisplayResolutionPixel768x1024, // 1, 2, mini 1
UIScreenDisplayResolutionPixel1536x2048, // 3, 4, Air(1, 2) mini(2, 3, 4), Pro 2<9.7-inch>
UIScreenDisplayResolutionPixel2048x2732, // Pro (1, 2<12.9-inch>)
};
选择一个选项,然后为许多设备使用它。
存在另一种枚举类型,它可以便于您计算屏幕显示宽高比。
typedef NS_ENUM(NSInteger, UIScreenDisplayAspectRatio) {
UIScreenDisplayAspectRatioUndefined,
UIScreenDisplayAspectRatio_3_2, // 3:2
UIScreenDisplayAspectRatio_4_3, // 4:3
UIScreenDisplayAspectRatio_16_9, // 16:9
};
您可以通过 CocoaPods 获取到 UIScreen_YJ。要安装它,只需将以下行添加到 Podfile 中:
pod "UIScreen_YJ"
huang-kun, [email protected]
UIScreen_YJ 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。