2010-07-26 3 views
0

Я борюсь с этой проблемой. Мне нужен портретный вид и пейзаж для моего приложения. Теперь, когда я создаю две кнопки, которые показывают мне портретный вид и пейзажный вид (вынуждены shouldAutorotateToInterfaceOrientation), они выглядят просто отлично. Но когда я вызываю представления из результирующего кода imagepicker, портретное изображение работает отлично, но ландшафтный вид возвращается таким образом. http://bit.ly/bfbobc.Вид на iPhone показывает неправильную ориентацию

Итак, просто дайте понять: аристократ уже повернут на 90 градусов, управление изображением отображается только наполовину (правая часть за кадром) ... Но iPhone не принудительно в ландшафтном режиме ...

Может кто-нибудь, пожалуйста, объясните мне, что здесь происходит или как я могу это достичь! Любая помощь приветствуется!

Вот как я называю представления из кода результата imagepickercontroller.

`- (Недействительными) imagePickerController: (UIImagePickerController *) vcImagePicker didFinishPickingMediaWithInfo: (NSDictionary *) Информация { NSLog (@ "Снимок был сделан/выбран, теперь мы должны решить, какой вид представления");

[vcImagePicker dismissModalViewControllerAnimated:YES]; 

UIImage *chosenPicture = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

if (chosenPicture.size.width > chosenPicture.size.height) { 
    NSLog(@"pic is in landscape"); 

    EditLandscapeScreen *vcEditLandscapeScreen = [[EditLandscapeScreen alloc] initWithNibName:@"EditLandscapeScreen" bundle:nil]; 
    vcEditLandscapeScreen.ChosenImage = chosenPicture; 
    [self.view addSubview:vcEditLandscapeScreen.view]; 
    [vcEditLandscapeScreen release]; 
} 
else { 
    NSLog(@"pic is in portrait"); 

    EditPortraitScreen *vcEditPortraitScreen = [[EditPortraitScreen alloc] initWithNibName:@"EditPortraitScreen" bundle:nil]; 
    vcEditPortraitScreen.ChosenImage = chosenPicture; 
    [self.view addSubview:vcEditPortraitScreen.view]; 
    [vcEditPortraitScreen release]; 
} 

} `

ответ

1

Если добавить подвид к View вы должны сделать изменения ориентации для вашего подвид самостоятельно. willRotateToInterfaceOrientation будет вызван только для первого ViewController поэтому при добавлении подвиды к ViewController это может быть приемлемым для вас способом:

в вашем ViewController:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 
    for (int i = 0; i < [self.viewControllers count]; i++) { 
     [[self.viewControllers objectAtIndex:i] didRotateFromInterfaceOrientation:fromInterfaceOrientation]; 
    } 
} 

в вас подвид ViewController:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{ 
    [self adjustViewsForOrientation:self.interfaceOrientation]; 
} 

    - (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation { 
     if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) { 
      NSLog(@"Subview Landscape"); 
      //Do Your Landscape Changes here 
     } 
     else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) { 
      NSLog(@"Subview Portrait"); 
      //Do Your Portrait Changes here 
     } 
    } 

Это может привести к правильному направлению.

+0

Я получаю, куда вы направляетесь, но я хочу заставить пейзаж на подзоре, а не просто предложить пейзаж. Я заставил это использовать «shouldAutorotateToInterfaceOrientation» и вернуть YES для ландшафтных моделей влево и вправо, но это «форсирование» - вещь просто не работает, когда я вызываю subview ... Любые идеи по этому поводу? Спасибо, в любом случае! – Martijn

Смежные вопросы