0

这是一个关于简单 UIInterfaceOrientation 对象的返回值的相当基本的问题,我尝试以下代码:

- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation
{
BOOL orientacion = interfaceOrientation;
return orientacion;
}

并且转换做到了,所以我认为 UIInterfaceOrientation 对象等于布尔变量?是隐式错字还是真正的 UIInterfaceOrientation 等于布尔值..

4

2 回答 2

6

UIInterfaceOrientation是一个enum,这本质上意味着它是一个整数。整数可以分配给布尔值。许多事情可以——布尔值简单地等同于真或假。如果布尔值设置为等于0nil,则为假。如果它被设置为0or nil(或其他一些d 等价物)之外的任何东西#define,那将是真的。由于 UIInterfaceOrientation 是一个枚举(整数),如果它等于 0,则布尔值将为假。如果它不是 0,那将是真的。

的值UIInterfaceOrientation

typedef enum {
    UIDeviceOrientationUnknown,
    UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom
    UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top
    UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right
    UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left
    UIDeviceOrientationFaceUp,              // Device oriented flat, face up
    UIDeviceOrientationFaceDown             // Device oriented flat, face down
} UIDeviceOrientation;

此列表中的第一个将等于0。下一个1,下一个2等。所以UIDeviceOrientationUnknown将布尔值设置为假;其他任何东西都会将其设置为true。


无论如何,您都没有正确使用此功能。该函数内部的代码需要阅读:

if((interfaceOrientation == someOrientationYouWantToWork) || (interfaceOrientation == someOtherOrientationYouWantToWork)
{
    return YES;
}
else
{
    return NO;
}

someOrientationYouWantToWorketc 设置为我在上面发布的枚举中的值。无论您想工作哪个方向,都可以返回YES。否则它将返回NO

于 2012-07-08T06:23:34.400 回答
1

它不是布尔值,而是枚举值——如果它不是 0,则默认为布尔值“YES”,否则为“NO”。

于 2012-07-08T06:22:51.123 回答