web-dev-qa-db-ja.com

CALayer-ストーリーボードUIButtonの下にサブレイヤーを配置しますか?

ストーリーボードにいくつかのUIButtonを備えたViewControllerがあります。それらの1つは、サブレイヤーに表示されるAVFoundationカメラプレビューレイヤーをアクティブにします。

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

これは、プレビューレイヤーがボタンの上にレンダリングされるため、ボタンはクリック可能であるにもかかわらず、ユーザーには表示されないという事実を除いて、正しく機能します。ボタンの下にサブレイヤーを配置する簡単な方法はありますか?または、レイヤー内のボタンを上げる簡単な方法はありますか?どうもありがとうございました!

27
golmschenk

ボタンレイヤーはすべて、メインビューのレイヤーのサブレイヤーです。ボタンのレイヤーの下にカメラプレビューレイヤーを配置する必要があります。これを試して:

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

追加するだけです。 UIViewメソッドbringSubviewToFront

[self.view bringSubviewToFront:self.desiredButton];
3
Sergio