Как изменить ориентацию камеры на альбомной ориентации левого и правого iPhone? - PullRequest
8 голосов
/ 02 декабря 2011

В моем приложении для iPhone у меня есть UIImagePickerController для съемки фотографий. Я скрыл все элементы управления камерой по умолчанию и добавил UIView с кнопкой Two в качестве CameraOverLayView в UIImagePickerController. Мое приложение всегда запускается только в ландшафтном режиме. Камера также запускает только альбомный режим. Теперь CameraOverlayView находится только в альбомной ориентации слева и не меняется на альбомную ориентацию вправо. Как я могу изменить CameraOverlayView LandscapeMode влево и вправо, когда ориентация устройства будет меняться? Пожалуйста, помогите мне исправить это. Это большая проблема в моем приложении. Этот код удерживает режим наложения в альбомном режиме Left

imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81);

и этот код удерживает изображение наложения камеры в альбомном режиме вправо GAffineTransform transform = self.view.transform;

    transform = CGAffineTransformRotate(transform, (M_PI / 2.0));

    imgpicker.cameraOverlayView.transform = transform;

Я использовал эти коды в таких методах UIInterfaceOrientation,

UIInterfaceOrientation orientation= [[UIApplication sharedApplication] statusBarOrientation];
    if (orientation == UIInterfaceOrientationLandscapeLeft) 
    {
        imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81);
    }
    else if (orientation == UIInterfaceOrientationLandscapeRight)
    {
        CGAffineTransform transform = self.view.transform;
            transform = CGAffineTransformRotate(transform, (M_PI / 2.0));
        imgpicker.cameraOverlayView.transform = transform;
    }

Но это не помогает мне. Когда я поворачиваю альбомную ориентацию устройства влево и вправо, вид наложения камеры не меняется. Можете ли вы исправить мою проблему? Благодаря.

1 Ответ

16 голосов
/ 19 января 2012

Спасибо всем. Я решил проблему ориентации Camera OverlayView самостоятельно. Я использовал тот же код, упомянутый в моем вопросе. Просто я добавил UIDeviceOrientation Notification для изменения ориентации. Пожалуйста, найдите код ниже,

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];


- (void) orientationChanged:(NSNotification *)notification
{
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if(orientation == UIDeviceOrientationLandscapeLeft)
        {                  
            CGAffineTransform transform = self.view.transform;
            transform = CGAffineTransformRotate(transform, (M_PI/2.0));
            imgpicker.cameraOverlayView.transform = transform;
        } 
        else if(orientation == UIDeviceOrientationLandscapeRight) 
        {   
            imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity,117.81);
        }  
}

Я только что добавил этот метод в свой код. Чтобы при изменении пользователем ориентации устройства этот метод вызывал и изменял ориентацию вида наложения камеры. Пожалуйста, проверьте ваши условия внутри этого метода, иначе приложение получит сбой. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...