【问题标题】:Convert from 1280x720 to UIView dimensions从 1280x720 转换为 UIView 尺寸
【发布时间】:2013-03-26 19:17:07
【问题描述】:

我有一个从 AVCaptureDevice 示例缓冲区委托中查找 QR 查找器标记的应用程序。现在我正试图在屏幕上放置框以覆盖 QR 标记。但是,我无法在 1280x720 像素分辨率和 cameraView 大小之间进行转换。

我正在尝试编写一个基于这些参数(以及视图坐标系颠倒的事实)转换 CGRect 的方法,但它不起作用。它也可能与相机设备的方向有关。这是我的转换方法代码:

-(CGRect) convertRect:(CGRect) oldRect From90DegreeRotatedCameraSize1280x720ToUIViewSize:(CGSize) viewSize
{
//remember that we are using a gravity of resize aspect fill

double xScale = viewSize.width / 720;
double yScale = viewSize.height / 1280;

if (xScale < yScale)
    return CGRectMake(oldRect.origin.x * xScale, viewSize.height - oldRect.origin.y * xScale, oldRect.size.height * xScale, oldRect.size.width * xScale);
else
    return CGRectMake(oldRect.origin.x * yScale, viewSize.height - oldRect.origin.y * yScale, oldRect.size.height * yScale, oldRect.size.width * yScale);
}

有人对这个相对简单的空间坐标问题有一个优雅的解决方案吗?

编辑-

我做了一个连接视频方向的 NSLog,结果它永远不会从 1 改变(我认为它被枚举为纵向方向。)从这里,应该更容易找到解决方案,因为坐标确实不同方向不变。

有什么想法吗,程序员社区?

【问题讨论】:

    标签: xcode ios6 uikit core-graphics


    【解决方案1】:

    想通了:

    当 iOS 填充一个视图时,它会居中,这样两边就被切断了。为了在视图坐标之间转换,您需要缩放并在被切断的方向上平移:

                return CGRectMake(oldRect.origin.x * xScale, oldRect.origin.y * xScale - (1280 * xScale - viewSize.height) / 2, oldRect.size.height * xScale, oldRect.size.width * yScale);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 2016-04-14
      • 2020-10-25
      • 2023-04-11
      • 2016-04-06
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多