UIInterfaceOrientation对象的返回值是否等于布尔值var?

时间:2012-07-08 06:05:25

标签: objective-c ios uiinterfaceorientation

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

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

并且转换完成了,所以我认为UIInterfaceOrientation对象等于布尔值var ??是一个隐含的拼写错误或真正的UIInterfaceOrientation等于布尔值..

2 个答案:

答案 0 :(得分:6)

UIInterfaceOrientationenum,这实质上意味着它是一个整数。整数可以分配给布尔值。许多事情都可以 - 布尔人简单地等同于真或假。如果布尔值设置为0nil,则为false。如果它设置为任何而不是0nil(或其他#define d等效物),那么它将是真的。由于UIInterfaceOrientation是枚举(整数),如果它等于0,则布尔值将为false。如果它不是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会将布尔值设置为false;其他任何东西都会把它设置为真。


在任何情况下,您都没有正确使用此功能。此函数中的代码需要读取:

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

someOrientationYouWantToWork等设置为我在上面发布的枚举中的值。无论您想要使用哪种方向,都要返回YES。否则它将返回NO

答案 1 :(得分:1)

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