【问题标题】:Camera Overlay not in the center相机叠加层不在中心
【发布时间】:2015-04-08 17:22:31
【问题描述】:

我正在尝试向此 UIImagePickerController 实例添加叠加层,但结果是叠加层偏离中心。

我创建了一个简单的红色正方形 (300x300 pt) 来举例说明问题并用作叠加层,并将其添加到相机叠加层中,使用如下:

  CGRect bounds = [[UIScreen mainScreen] bounds];

  UIView *containerOverlay = [[UIView alloc] initWithFrame:bounds];

  UIImage *overlay = [UIImage imageNamed:@"red"];
  UIImageView *overlayView = [[UIImageView alloc] initWithImage:overlay];
  CGFloat midX = CGRectGetMidX(bounds);
  CGFloat midY = CGRectGetMidY(bounds);

  CGPoint center = CGPointMake(midX, midY);
  overlayView.center = center;
  [containerOverlay addSubview:overlayView];


 [_camera setCameraOverlayView:containerOverlay];

这是实时预览中显示的内容...完全偏离垂直中心。

令人惊讶的是,当我拍照并且 iOS 向我显示已经拍摄的照片时,叠加层神奇地居中......

如何将叠加层置于实时摄像头的中心?

【问题讨论】:

    标签: ios cocoa-touch uiimagepickercontroller overlay


    【解决方案1】:

    叠加层以 y 为中心以屏幕边界为中心,对吗?

    你在这里做什么:

    CGFloat midX = CGRectGetMidX(bounds);
    CGFloat midY = CGRectGetMidY(bounds);
    

    如果您希望叠加层与实际图像矩形对齐,则需要偏移底部黑条(它与顶部黑条的高度不同)。

    【讨论】:

    • 这行告诉你什么? [_camera setCameraOverlayView:containerOverlay]; 叠加层正在被添加到UIImagePickerController 实例中并且偏离中心。
    • 你是对的,它被添加到cameraOverlayView中。但是位置是根据屏幕边界计算的。如:您将叠加层的中心设置为屏幕的中心点。
    • 有没有办法得到真正的相机帧?我尝试过使用[_camera.cameraOverlayView frame];[_camera.view frame],两者都得到了{0,0,320,568}。有什么方法可以获取相机图像的坐标?
    • 好吧,我不推荐它,但您可以遍历子视图并获取相机视图和/或按钮栏。这是视图层次结构:gist.github.com/Reflejo/1f3c553363c712a8e480
    • 因为您的回答在技术上是正确的,所以我接受它。无论如何,这个 API 是愚蠢的。 Apple 不应该调用该属性cameraViewOverlay,因为它不是相机叠加层,而是相机视图控制器叠加层。无论如何,我通过使用 AVFoundation 解决了这个问题,因为黑客解决方案是不可接受的,并且可能会随着时间的推移而中断。感谢您的帮助。
    猜你喜欢
    • 2018-10-25
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多