CALayer - Поместить подслой под UIB-кнопки раскадровки?

У меня есть контроллер представления в моей раскадровке с несколькими кнопками UIB. Один из них активирует слой предварительного просмотра камеры AVFoundation, показанный в подслое:

captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
captureVideoPreviewLayer.frame = self.view.bounds;
[self.view.layer addSublayer:captureVideoPreviewLayer];

Это работает правильно, за исключением того факта, что слой предварительного просмотра отображается поверх моих кнопок, поэтому, даже если кнопки по-прежнему нажимаемы, пользователь не сможет их увидеть. Есть ли простой способ разместить подслой под кнопками? Или простой способ поднять кнопки вверх в слое? Спасибо много!

2 ответа

Решение

Слои кнопок - это все подслои слоев основного вида. Вам нужно поместить слой предварительного просмотра камеры ниже слоев кнопки. Попробуй это:

// put it behind all other subviews
[self.view.layer insertSublayer:captureVideoPreviewLayer atIndex:0];

// or, put it underneath your buttons, as long as you know which one is the lowest subview
[self.view.layer insertSublayer:captureVideoPreviewLayer below:lowestButtonView.layer];

Просто чтобы добавить. Вы можете поднять любой подкласс UIView вверх по слою, вызвав метод UIView метода takeSubviewToFront.

[self.view bringSubviewToFront:self.desiredButton];
Другие вопросы по тегам