【问题标题】:Set Background Camera behind UILabels在 UILabel 后面设置背景摄像头
【发布时间】:2016-01-22 05:33:31
【问题描述】:

我已经尝试了很长时间,但无法解决,但基本上我想在我的标签和按钮后面的背景中显示实时摄像机源。这是我正在使用的使相机出现的代码

   - (void)viewDidLoad {
    [super viewDidLoad];

    AVCaptureSession *session = [[AVCaptureSession alloc] init];
    session.sessionPreset = AVCaptureSessionPresetHigh;

    AVCaptureDevice *device = [AVCaptureDevice  defaultDeviceWithMediaType:AVMediaTypeVideo];

    NSError *error = nil;
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
    [session addInput:input];

    AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
    newCaptureVideoPreviewLayer.frame = self.view.bounds;

    [self.view addSublayer:newCaptureVideoPreviewLayer.view];
    [self.view sendSubviewToBack:newCaptureVideoPreviewLayer.view];

    [session startRunning];

}

我不知道如何将它放在视图上的标签后面确实加载了。任何帮助将不胜感激!

【问题讨论】:

  • [self.view.layer sendSubviewToBack:newCaptureVideoPreviewLayer]; 尝试在后台设置视图

标签: ios objective-c xcode avcapturesession viewdidload


【解决方案1】:

您只需要使用sendSubviewToBack在后台添加视图

更多详情可以查看Apple AVCam Example

sendSubviewToBack: 移动指定的子视图,使其出现在其兄弟视图的后面。

AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
newCaptureVideoPreviewLayer.frame = self.view.bounds;

[self.view.layer addSublayer:newCaptureVideoPreviewLayer];
[session startRunning];

[[self.view superView] insertSubview:newCaptureVideoPreviewLayer belowSubview:self.view];

【讨论】:

  • 当我添加此代码时,我收到一条错误消息,提示“'CALayer' 没有可见的@interface 声明选择器'sendSublayerToBack:'”我只是在视图中实现了 AVCapture 会话,所以我不要在其他任何地方声明它
  • 现在我得到 No visible @interface for 'UIView' 声明选择器 'addSublayer:' 和不兼容的指针类型发送 'AVCaptureVideoPreviewLayer *' 到类型参数 'UIView * _Nonnull' 我也尝试连接视图在我的 .h 文件中并将其标记为 cameraview 但是当我运行应用程序时它崩溃了,这很痛苦!我也感谢你的帮助
  • @spel [self.view addSublayer:newCaptureVideoPreviewLayer.view]; 检查我更新的答案我忘了添加:newCaptureVideoPreviewLayer.view 现在检查我的最新答案
  • 现在添加的 .view 正在为 self.view 的“AVCaptureVideoPreviewLayer”类型的对象上找不到“属性 'view'”
  • 你做错了什么我能看到你的完整源代码吗?
猜你喜欢
  • 2018-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多