2013-09-17 6 views
1

У меня есть UIImagePickerController добавил к моему мнению, таким образом:Фикс UIImagePickerController портретной ориентации

- (IBAction)TakeCameraShot:(id)sender{ 

if ([UIImagePickerController isSourceTypeAvailable: 
    UIImagePickerControllerSourceTypeCamera]) 
{ 

    // Given by default your orientation is in landscaperight already 
    while ([[UIDevice currentDevice] isGeneratingDeviceOrientationNotifications]) 
     [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 


    /* picker.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    picker.view.backgroundColor = [UIColor clearColor]; 
    self.modalPresentationStyle = UIModalPresentationCurrentContext;*/ 
    [self presentViewController:picker animated:YES completion:nil]; 

    /* picker.view.layer.cornerRadius = 150; 
    picker.view.clipsToBounds = YES; 
    picker.view.frame = CGRectMake(12, 60, 296, 290);*/ 

}else{ 
    NSLog(@"Camera is not available"); 
    UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:@"Important message" message:@"Unfortunately the camera is not available on your device." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil]; 
    [alert1 show]; 
} 
} 

Я пытаюсь, чтобы предотвратить его от поворота на альбомную с этим кодом

// Given by default your orientation is in landscaperight already 
    while ([[UIDevice currentDevice] isGeneratingDeviceOrientationNotifications]) 
     [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 

Ответ на этот вопрос переполнения стека также сказал, что он будет работать, только если UIviewController уже настроен только на портрет, так что это то, что я сделал из общих настроек приложения (где вы выбираете ipad, iphone или универсальный). Но это не работает.

ответ

1

Этот код будет работать на Ipad я использовал его, но вам нужно добавить этот

while ([[UIDevice currentDevice] isGeneratingDeviceOrientationNotifications]) 
     [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 

После представления UIImagePickerController слишком ---

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

    while ([[UIDevice currentDevice] isGeneratingDeviceOrientationNotifications]) 
     [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 
    [self presentViewController:picker animated:YES completion:nil]; 

while ([[UIDevice currentDevice] isGeneratingDeviceOrientationNotifications]) 
    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 

Это также будет работать на ставку, но на ipod он по-прежнему дает вам повернутое изображение, если вы хотите, чтобы изображение в потоке было всегда, вам необходимо изменить ориентацию, как это

UIImageOrientationRight - Этот ориентир ция, когда изображение будет нажато, когда камера находится в Портретной UIImageOrientationUp - Это когда камера в ландшафтном оставила

UIImageOrientationDown - Это когда камера пейзаж правого

UIImageOrientationLeft - это когда камера potraitupside вниз

теперь во всех других трех условиях, кроме первого, чем изменение ориентации изображения на UIImageOrientationRight.

Это можно сделать, только проверив ориентацию приближающегося изображения и применив новую ориентацию.

+0

Я сожалею сказать, но это на самом деле не работает ... – Alessandro

+0

не вы используете накладку –

+0

не только код, который вы видите на вопрос – Alessandro

0

просто создать категорию UIImagePickerController и поставить эту строку кода в этом классе

  • (BOOL) shouldAutorotate { возвращение NO; }
Смежные вопросы