Слой предварительного просмотра камеры AVFoundation не работает

Итак, я пытаюсь реализовать камеру с помощью AVFoundation. Я думаю, что я все делаю правильно. это то, что я делаю

создать сессиюполучить устройства типа видеоПроходить через устройства, чтобы получить камеру сзадиполучить вход устройства, используя устройство, указанное в # 3, и добавить его в сеанссоздать вывод типаAVCaptureStillImageOutputустановить настройки вывода и добавить его в сеансполучить CALayer с моей точки зрения 2 (ниже объясню, что я имею в виду под представлением 2)создать экземплярAVCaptureVideoPreviewLayerдобавьте его в слой, упомянутый в # 7начать сеанс

Таким образом, у меня есть 2 представления один над другим. Один сверху - вид 1, а нижний - вид 2. Предполагается, что вид 1 обеспечивает пользовательские элементы управления камерой.

Вот код:

self.session = [[AVCaptureSession alloc]init];
[self.session setSessionPreset:AVCaptureSessionPresetHigh];
NSArray *devices = [[NSArray alloc]init];
devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices){
    if([device position] == AVCaptureDevicePositionBack){
        self.device = device;
        break;
    }
}
NSError *error;
self.input = [[AVCaptureDeviceInput alloc]initWithDevice:self.device error:&error];
if([self.session canAddInput:self.input]){
    [self.session addInput:self.input];    
}


self.stillImageOutput = [[AVCaptureStillImageOutput alloc]init];
NSDictionary *outputSettings = @{AVVideoCodecKey : AVVideoCodecJPEG};
[self.stillImageOutput setOutputSettings:outputSettings];

[self.session addOutput:self.stillImageOutput];

CALayer *cameraLayer = self.cameraView.layer;
self.cameraView.backgroundColor = [UIColor clearColor];

AVCaptureVideoPreviewLayer *preview = [[AVCaptureVideoPreviewLayer alloc]initWithSession:self.session];
[cameraLayer addSublayer:preview];

[self.session startRunning];

То, что я получаю, это вид 1 (в качестве фона у него есть изображение в формате .png. У изображения есть отверстие, так что вид под ним, вид 2 может быть видимым) и вид 2 виден, но я не вижу того, что должен. Поскольку я изменил цвет фона для вида 2, чтобы очистить цвет, я вижу все черное. Я должен видеть то, что видит камера.

Ответы на вопрос(1)

Ваш ответ на вопрос