Код для программной ориентации ландшафта?
В FirstViewController есть кнопка. После того, как она нажата, появляется модальный переход, который переходит к SecondViewController. FirstViewController - это Portrait, а SecondViewController - это Landscape. В файле раскадровки я установил для SecondVC значение Landscape, но симулятор iOS не будет автоматически изменять его ориентацию.
Может кто-нибудь помочь мне найти код, который автоматически превращает SecondViewController из Portait в альбомную?
viewDidLoad
заявление в SecondVC:
-(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;
}
Любая помощь приветствуется.
1 ответ
К сожалению, пока ваша попытка позвонить UIDeviceOrientationIsLandscape(YES);
была отважная попытка, которая фактически не меняет ориентацию. Этот метод используется для подтверждения того, является ли переменная, содержащая ориентацию, альбомной или нет.
Например, UIInterfaceOrientationIsLandscape(toInterfaceOrientation)
вернет TRUE, если toInterfaceOrientation
содержит альбомную ориентацию и 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;
}