Делайте снимки из ViewController

#ios #objective-c #ipad

#iOS #objective-c #iPad

Вопрос:

Я создаю приложение с видом прокрутки. На одном экране у меня много UIPopovers. При прокрутке страницы на новый экран я хотел бы иметь возможность сделать снимок сразу после нажатия кнопки. В настоящее время у меня есть кнопка для запуска камеры и предварительный просмотр, добавленный в качестве подслоя

Текущая ситуация

Код:

 - (IBAction)startCameraButtonPushed:(id)sender
{
    if (session.isRunning) {
        [startCamera setTitle:@"Start Camera" forState:UIControlStateNormal];
        previewLayer.hidden = YES;
        [session stopRunning];
        session = nil;
        previewLayer = nil;
    } else {
        [startCamera setTitle:@"Stop Camera" forState:UIControlStateNormal];
        session = [[AVCaptureSession alloc] init];
        AVCaptureOutput *output = [[AVCaptureStillImageOutput alloc] init];
        [session addOutput:output];
        NSArray *possibleDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
        AVCaptureDevice *device = [possibleDevices objectAtIndex:0];
        NSError *error = nil;
        AVCaptureDeviceInput* input = [AVCaptureDeviceInput deviceInputWithDevice:device error:amp;error];
        session.sessionPreset = AVCaptureSessionPresetPhoto;

        [session addInput:input];

        previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];

        previewLayer.frame = CGRectMake(3202, 100, 800, 400);
        previewLayer.hidden = YES;
        // previewLayer.delegate = self;
        [self.scrollView.layer addSublayer:previewLayer];
        previewLayer.hidden = NO;
        [session startRunning];
    }

}
  

Как вы можете видеть, камера находится в портретном режиме, и я очень стараюсь перевести ее в альбомную ориентацию. Пока не повезло. Также трудно найти встроенную кнопку для фактического создания снимка.
Если бы кто-нибудь мог мне немного помочь, я был бы очень признателен!

Комментарии:

1. Вы спрашиваете, как заставить изображение вращаться или как запустить его при загрузке контроллера просмотра?

2. Я получил его загрузку, это не проблема. Наличие изображения в ландшафтном режиме — это то, что я хотел бы знать. Спасибо!

Ответ №1:

Вы можете преобразовать слой предварительного просмотра, чтобы видео отображалось в правильной ориентации:

 if (self.interfaceOrientation == UIInterfaceOrientationPortrait) {
    previewLayer.affineTransform = CGAffineTransformMakeRotation(0);
} else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
    previewLayer.affineTransform = CGAffineTransformMakeRotation(M_PI/2);
} else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    previewLayer.affineTransform = CGAffineTransformMakeRotation(-M_PI/2);
} else if (self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
    previewLayer.affineTransform = CGAffineTransformMakeRotation(M_PI);
}
  

Комментарии:

1. Я получаю: присвоение ‘CATransform3D’ из несовместимого типа ‘CGAffineTransform’

2. Извините, должно было быть affineTransform свойство