2013-04-16 18 views
24

我有几个UIButtons在我的故事板中有一个视图控制器。其中一人激活一个子层所示的AVFoundation摄像头预览层:CALayer - 在storyboard UIButton下面放置子图层?

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

这正常工作不同的是,预览层在我的按钮上面呈现的事实,因此,即使这些按钮仍然可点击他们不能够被用户看到。有没有简单的方法来放置按钮下方的子图层?或者在图层中提高按钮的简单方法?非常感谢!

回答

43

按钮图层都是主视图图层的所有子图层。您需要将相机预览图层放置在按钮的图层下方。试试这个:

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

第一个工作。但只是为了将来的参考,我如何找出按钮所在图层的名称? – golmschenk

+1

如果您在Interface Builder中添加了按钮,则应将它们连接到视图控制器代码中按钮的IBOutlet。这样你就拥有了它们的属性。或者,您可以使用IB中的**标签**属性,然后通过按钮视图的标签找到它们。这是否回答你的问题? – stevekohls

+0

我发现'''[self.view.layer insertSublayer:captureVideoPreviewLayer below:lowestButtonView.layer];'''对我的情况更好用 –

2

刚刚添加。您可以通过调用UIView方法bringSubviewToFront在图层中向上提升UIView的任何子类。

[self.view bringSubviewToFront:self.desiredButton]; 
+0

对我不起作用。你试过了吗? – Jaybo