【问题标题】:CALayer - Place sublayer below storyboard UIButtons?CALayer - 将子图层放置在故事板 UIButtons 下方?
【发布时间】:2013-04-09 05:12:51
【问题描述】:

我的情节提要中有一个带有多个 UIButton 的视图控制器。其中一个激活子层中显示的 AVFoundation 相机预览层:

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

这可以正常工作,除了预览层呈现在我的按钮之上,因此即使按钮仍然可以点击,用户也看不到它们。有没有一种简单的方法可以将子图层放置在按钮下方?或者一种简单的方法来提高图层中的按钮?非常感谢!

【问题讨论】:

    标签: ios uibutton avfoundation calayer avcapturesession


    【解决方案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];
    

    【讨论】:

    • 第一个成功了。但只是为了将来参考,我如何找出按钮所在图层的名称?
    • 如果您在 Interface Builder 中添加了按钮,您应该将它们连接到视图控制器代码中按钮的 IBOutlet。这样你就有了他们的属性。或者,您可以使用 IB 中的 tag 属性,然后通过按钮视图的标签找到它们。这回答了你的问题吗?
    • 我发现[self.view.layer insertSublayer:captureVideoPreviewLayer below:lowestButtonView.layer]; 更适合我的情况
    【解决方案2】:

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

    [self.view bringSubviewToFront:self.desiredButton];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      相关资源
      最近更新 更多