我有这个代码调用这个方法(你不注释要使用的方法)
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
NSLog(@"So the orientation is %d", OrientationInteger);
//1 is button to the left, 0 to the right.
if (OrientationInteger == 1) {
return UIInterfaceOrientationLandscapeLeft;
NSLog(@"setting Orientation landscape left");
}
if (OrientationInteger == 0) {
return UIInterfaceOrientationLandscapeRight;
NSLog(@"setting Orientation landscape right");
}
else {
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
NSLog(@"no instructions regarding orientation.");
}
}
但是,方向不会改变,第一次触发后的日志消息也不会改变。
NSLog(@"So the orientation is %d", OrientationInteger);
有时给出'因此方向为1'或'因此方向为2'。 任何想法?
答案 0 :(得分:1)
您的问题是,您要返回int
(UIInterfaceOrientation
)而不是BOOL
。
这个方法基本上是系统询问你的视图控制器是否有旋转权限。您需要返回YES
表示您支持的方向,并NO
表示您不想支持的方向。
类似
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
NSLog(@"landscape right allowed");
return YES;
} else {
NSLog(@"denied rotation to %i", interfaceOrientation);
return NO;
}
正如其他人所指出的那样,return语句退出你的方法,将返回值传递给调用它的方法。返回命中后,不再运行方法中的代码。
答案 1 :(得分:0)
只要运行return
语句,该方法就会退出。因此,return
语句之后的日志消息将永远不会显示。
我不知道为什么实际的功能不起作用;它可能是代码中其他地方的问题。