向下有我的代码在iPhone旋转时被调用。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
switch (interfaceOrientation) {
case UIInterfaceOrientationPortrait:
// some action
return YES;
case UIInterfaceOrientationLandscapeLeft: {
// some action
return NO;
}
case UIInterfaceOrientationLandscapeRight: {
// some action
return NO;
}
default:
return NO;
break;
}
}
我认为这已经足够了,但后来我发现了,
case UIInterfaceOrientationPortrait:
永远不会打电话给。 我能做什么?我必须使用默认值吗?也许它不是最好的解决方案,或者它是?
答案 0 :(得分:2)
确定。我找到了答案。旋转手机时会收到通知。
[[NSNotificationCenter defaultCenter] addObserver: self
selector:@selector(receivedRotate:)
name:UIDeviceOrientationDidChangeNotification
object: nil];
和
- (void)receivedRotate:(NSNotification*)notif {
UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
switch (interfaceOrientation) {
case UIInterfaceOrientationPortrait: {
break;
}
case UIInterfaceOrientationLandscapeLeft: {
break;
}
case UIInterfaceOrientationLandscapeRight: {
break;
}
default:
break;
}
}
使用它;)
答案 1 :(得分:0)
如果您只是想使用纵向方向,这应该足够了。
你在哪里覆盖这个功能?它应该在最顶层的视图控制器中。
答案 2 :(得分:0)
我刚刚将您的代码提供给示例应用程序,并且它的工作正常,使用给定的代码,当我将方向更改为横向时,视图中的任何内容都没有发生任何事情。一种方法是为每个方向单独设计视图,并对所有方向返回YES并使用以下属性
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation duration:(NSTimeInterval)duration {
if (interfaceOrientation == UIInterfaceOrientationPortrait
|| interfaceOrientation ==
UIInterfaceOrientationPortraitUpsideDown) {
//design your portrait view eg: for button, button.frame = CGRectMake(x,y,w,h)
}
else {
//design for the landscape
}
}