我在按位上有点迷失;)
我的目标是检索应用程序支持的整个方向集,并测试每个结果值以更新自定义变量。 我的问题是我不知道如何进行比较(我得到转换/测试问题......)
首先我读了这篇文章:Testing for bitwise Enum values 但它并没有给我带来光明......
假设我的应用程序声明如下(以下是我的变量 supportedOrientations 的日志输出): 支持的方向=( UIInterfaceOrientationPortrait )
所以我的第一次尝试是尝试对整数值进行一些测试,但它不起作用(即使申请被声明为纵向模式,测试返回' false'):
NSArray *supportedOrientations = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UISupportedInterfaceOrientations"];
NSLog(@"[supported orientations = %@", supportedOrientations);
// for clarity just make a test on the first orientation we found
if ((NSInteger)supportedOrientations[0] == UIInterfaceOrientationPortrait) {
NSLog(@"We detect Portrait mode!");
}
我的第二次尝试是尝试按位事物,但这次总是返回' true' (即使支持的方向不是UIInterfaceOrientationPortrait)。 :
NSArray *supportedOrientations = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UISupportedInterfaceOrientations"];
NSLog(@"[supported orientations = %@", supportedOrientations);
// for clarity just make a test on the first orientation we found
if ((NSInteger)supportedOrientations[0] | UIInterfaceOrientationPortrait) { // <-- I also test with UIInterfaceOrientationMaskPortrait but no more success
NSLog(@"We detect Portrait mode!");
}
所以我的问题是:
如何在我的情况下测试方向?
是否可以通过使用按位(使用| operand)来使用测试?
答案 0 :(得分:0)
官方文档说 UISupportedInterfaceOrientations 是一个字符串数组。 https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW10
因此,解决方案是对数组中找到的每个元素使用NSString比较。
NSArray *supportedOrientations = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UISupportedInterfaceOrientations"];
for (NSString *orientation in supportedOrientations) {
if ([orientation isEqualToString:@"UIInterfaceOrientationPortrait"] ||
[orientation isEqualToString:@"UIInterfaceOrientationPortraitUpsideDown"]) {
NSLog(@"*** We detect Portrait mode!");
} else if ([orientation isEqualToString:@"UIInterfaceOrientationLandscapeLeft"] ||
[orientation isEqualToString:@"UIInterfaceOrientationLandscapeRight"]) {
NSLog(@"*** We detect Landscape mode!");
}
}
请注意,这样做我们没有利用枚举值(UIInterfaceOrientation类型),但它可以工作!