Проблема с ориентацией наложения камеры iPad

Я разрабатываю приложение для iPad2, которое позволяет пользователю делать фотографии. Я собираюсь использовать пользовательское наложение для выбора изображений. Но этот вид наложения не определяет ориентацию устройства.

Я пробовал с didRotateFromInterfaceOrientation и willAnimateRotationToInterfaceOrientation. Но ни один из них не работает. Вот как я создаю оверлей.

@interface CameraOverlayController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>


-(void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType
{
    self.picker.sourceType = sourceType;

    if (sourceType == UIImagePickerControllerSourceTypeCamera)
    {        
        self.picker.showsCameraControls = NO;        

        if ([[self.picker.cameraOverlayView subviews] count] == 0)
        {
            CGRect overlayViewFrame = self.picker.cameraOverlayView.frame;

            if (UIDeviceOrientationIsLandscape(self.interfaceOrientation)) {
                NSLog(@"Initially Landscape and height : %f" , CGRectGetHeight(overlayViewFrame));
            }
            if (UIDeviceOrientationIsPortrait(self.interfaceOrientation)) {
                NSLog(@"Initially Portrait and height : %f", CGRectGetHeight(overlayViewFrame));
            }
            self.view.backgroundColor = [UIColor clearColor];

            CGRect newFrame = CGRectMake(0.0, CGRectGetHeight(overlayViewFrame) - self.view.frame.size.height - 10.0, CGRectGetWidth(overlayViewFrame), self.view.frame.size.height + 10.0);

            self.view.frame = newFrame;
            [self.picker.cameraOverlayView addSubview:self.view];
        }
    }
}

Может ли кто-нибудь сказать мне, как я могу определить вращение устройства в наложении камеры?

Большое спасибо


person Chinthaka    schedule 21.06.2011    source источник


Ответы (1)


У меня есть solove вышеуказанная проблема самостоятельно. Вышеупомянутая функция была воссоздана следующим образом.

-(void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType
{
    self.picker.sourceType = sourceType;
    if (sourceType == UIImagePickerControllerSourceTypeCamera)
    {
        self.picker.showsCameraControls = NO;                
    }
}

Затем я использую делегат контроллера навигации. В рамках этой функции я мог зафиксировать ориентацию устройства и решить свои проблемы.

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

Спасибо за просмотр.

person Chinthaka    schedule 08.07.2011
comment
привет, можешь подробнее рассказать об этом? Можете ли вы показать мне, как вы реализовали willShowViewController? Спасибо - person Jay Q.; 14.01.2012
comment
Этот willShowViewController является делегатом контроллера навигации. Реализуйте весь свой пользовательский интерфейс (панель инструментов navigationController, кнопки и т. д.) внутри этого метода и добавьте в viewController в качестве подпредставления. Я надеюсь, что это поможет вам. - person Chinthaka; 16.01.2012
comment
@Chinthaka: Привет... Я создал пользовательскую камеру, и экран в реальном времени нормально загружается в портретном режиме. Но когда я меняю его на ландшафтный режим, я получаю эту ошибку в консоли CGAffineTransformInvert: единственная матрица. Я пытался использовать маску автоматического изменения размера для изменения ориентации живого экрана, но это не помогает. - person The X-Coder; 19.03.2013
comment
Не могли бы вы опубликовать свой код, где я могу посмотреть? Или вы можете опубликовать как отдельный вопрос, где любой может ответить. - person Chinthaka; 20.03.2013