Ios 目标C:通过安全区域插入检测iPhone X
我正在尝试检测当前设备是否是Objective-C中的iPhone X。我在Swift中查看了一些其他设备,一个合适的方法似乎是将安全区域插入与Ios 目标C:通过安全区域插入检测iPhone X,ios,objective-c,iphone-x,uiedgeinsets,safearealayoutguide,Ios,Objective C,Iphone X,Uiedgeinsets,Safearealayoutguide,我正在尝试检测当前设备是否是Objective-C中的iPhone X。我在Swift中查看了一些其他设备,一个合适的方法似乎是将安全区域插入与UIEdgeInsets.zero进行比较。然而,每当我尝试这样做时,我都会得到nil。我在iOS 11和iPhoneX模拟器上运行这个 当我单步执行此方法时,我输入了第一个子句,但仍然返回一个nil - (BOOL)isiPhoneX { if (@available(iOS 11.0, *)) { return
UIEdgeInsets.zero进行比较。然而,每当我尝试这样做时,我都会得到nil
。我在iOS 11和iPhoneX模拟器上运行这个
当我单步执行此方法时,我输入了第一个子句,但仍然返回一个nil
- (BOOL)isiPhoneX
{
if (@available(iOS 11.0, *))
{
return UIEdgeInsetsEqualToEdgeInsets(self.safeAreaInsets, UIEdgeInsetsZero);
}
else
{
return nil;
}
}
你得到的不是nil
,而是NO
<代码>否
可能显示为nil
,具体取决于您如何看待该值。并且您的逻辑是向后的。对于iPhoneX,安全区域插图将不会为零。对于BOOL
,不要返回nil
。在else
中返回NO
。链接中有答案。跟踪设备的唯一终极方法是使用UIDevice
。顺便说一句,为什么你需要知道这个设备是否是iPhoneX?你的应用程序不应该在意是否编写正确。你没有得到nil
,你得到的是NO
<代码>否可能显示为nil
,具体取决于您如何看待该值。并且您的逻辑是向后的。对于iPhoneX,安全区域插图将不会为零。对于BOOL
,不要返回nil
。在else
中返回NO
。链接中有答案。跟踪设备的唯一终极方法是使用UIDevice
。顺便说一句,为什么你需要知道这个设备是否是iPhoneX?你的应用程序不应该在意是否编写正确。