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