#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
свойство