在FirstViewController中有一个按钮。按下后,有一个模态segue转到SecondViewController。 FirstViewController是Portrait,SecondViewController是Landscape。在storyboard文件中,我将SecondVC设置为Landscape,但iOS模拟器不会自动更改它的方向 有人可以帮我找到自动将SecondViewController从Portait变为Landscape的代码吗?
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;
}
任何帮助表示感谢。
答案 0 :(得分:4)
可悲的是,虽然你试图召唤UIDeviceOrientationIsLandscape(YES);
是一次勇敢的尝试,但实际上并没有改变方向。该方法用于确认持有方向的变量是否为横向。
例如,UIInterfaceOrientationIsLandscape(toInterfaceOrientation)
如果toInterfaceOrientation
保持横向,则返回TRUE,否则返回FALSE。
UIViewController类参考中的Handling View Rotations概述了更改方向的正确技巧。具体来说,在iOS 6中,您应该:
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
在iOS 5中,必要的方法是:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
return YES;
else
return NO;
}