在
FirstViewController
中有一个按钮。按下后,会出现一个模态转场,转到 SecondViewController
。 FirstViewController
是纵向,SecondViewController
是横向。在故事板文件中,我将 SecondVC 设置为 Landscape,但 iOS 模拟器不会自动更改其方向。SecondViewController
从纵向变为横向的代码吗?
SecondVC 中的viewDidLoad
声明:
-(void)viewDidAppear:(BOOL)animated {
UIDeviceOrientationIsLandscape(YES);
sleep(2);
santaImageTimer = [NSTimer scheduledTimerWithTimeInterval:0.5
target:self
selector:@selector(santaChangeImage)
userInfo:NULL
repeats:YES];
[santaImageTimer fire];
image1 = YES;
}
任何帮助表示赞赏。
可悲的是,虽然您尝试拨打
UIDeviceOrientationIsLandscape(YES);
是一次勇敢的尝试,但这实际上并没有改变方向。该方法用于确认保持方向的变量是否是横向的。
例如,如果
UIInterfaceOrientationIsLandscape(toInterfaceOrientation)
保持横向,则 toInterfaceOrientation
将返回 TRUE,否则返回 FALSE。
UIViewController 类参考中的处理视图旋转概述了更改方向的正确技术。具体而言,在 iOS 6 中,您应该:
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
在iOS 5中,必要的方法是:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
return YES;
else
return NO;
}