Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

// 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];

Ответ 2

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

[self.view bringSubviewToFront:self.desiredButton];