弧形/曲线覆盖在海拔/轴承上的 iPhone 相机

Posted

技术标签:

【中文标题】弧形/曲线覆盖在海拔/轴承上的 iPhone 相机【英文标题】:arc/curve overlay at elevation/bearing over iphone camera 【发布时间】:2013-10-29 03:52:32 【问题描述】:

伙计们,

我正在寻找关于我应该学习/阅读什么以完成我需要做的事情的指针/方向。我不是在寻找完整的解决方案/答案(当然,除非你已经准备好了:))。

我的问题是我想在相机/视频视图上显示一个叠加层。覆盖由一个 ARC/曲线组成,上面有点。叠加层会在那里,但它只会在用户将设备倾斜到仰角 X(度)和方位 Y 时显示。

在 youtube 上的以下两个视频中可以看到几个示例: http://www.youtube.com/watch?v=lRLpKZMCRHo 在时间 0:15 到 0:50 和 http://www.youtube.com/watch?v=oemvZl151eY 在时间 0:14 到结束 (0:48)

我从未使用过quartz/graphics/spritekit,我什至不知道这些是否有用,因此我不知道从哪里开始……

感谢您的帮助。提前致谢!

【问题讨论】:

【参考方案1】:

最简单的方法是使用石英。使用CGContext 绘制函数将您的弧线或曲线绘制到您放置在相机视图上的UIView 中。这可以在UIViewdrawRect: 方法中轻松完成,因为您可以轻松检索特定UIViewCGContext。为了更好地解释这一点,这里有一个例子:

//
//  PlotView.m
//  testApp
//
//  Created by Me on 10/20/13.
//  Copyright (c) 2013 Me. All rights reserved.
//

#import "PlotView.h"

@implementation PlotView

-(void)drawRect:(CGRect)rect

    //The CGContext for this UIView instance
    CGContextRef context = UIGraphicsGetCurrentContext();

    //Set the draw style
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    //Add elements to draw
    CGContextAddArc(context, CGRectGetMidX(rect), CGRectGetMidY(rect), CGRectGetWidth(rect)/2, M_PI_4, 3*M_PI_4, YES);
    //commit draw
    CGContextDrawPath(context, kCGPathStroke);

    //additional parts with different draw setup
    CGContextSetLineWidth(context, 5);
    CGContextAddEllipseInRect(context, CGRectMake(10, 10, 50, 50));
    CGContextDrawPath(context, kCGPathFillStroke);


@end

您可以在这个单一视图中绘制所有内容,并根据设备移动调整其位置。您也可以正常隐藏/显示视图(更改alphahidden 属性)。 要触发更新(例如,当卫星改变位置时)调用setNeedsDisplaysetNeedsDisplayInRect: 方法。为了优化,如有必要,请在后者中使用rect 参数(以及drawRect 方法中的相同参数)以仅在需要的部分视图上触发重绘(并且也仅在此矩形中绘制)。

关于你需要显示的曲线:我相信你会找到一个合适的CGContextAdd...函数来绘制你需要绘制的形状,无论是圆弧、一组直线还是贝塞尔曲线。

【讨论】:

Burax,感谢您提供非常详细的答案,这是对我需要进一步研究/研究的内容的一个很好的介绍。现在,我将投票赞成答案,在研究/尝试了您在一周内提到的内容之后,我会回来并将其标记为答案。再次,非常感谢您的介绍!欣赏! burax,对于迟到的评论感到抱歉:我已经离开一段时间了,直到现在才能完全理解/学习您提出的解决方案。我还没有实现它,我有几个问题,如果你能花一点时间来回答,我将不胜感激: 1- 你说“使用 CGContext 绘制函数将你的弧线或曲线绘制到你放在相机上的 UIView 中视图”如果弧/视图将比屏幕尺寸大得多并根据当前设备方位设置它会起作用吗? 2- 卫星并不会真正改变位置(地球静止),因此基于纬度/经度和方位 X 度(也是仰角)的位置,带有卫星点的曲线将始终相同。只有当设备的方位X和仰角改变时,曲线才会移动......(只是说)

以上是关于弧形/曲线覆盖在海拔/轴承上的 iPhone 相机的主要内容,如果未能解决你的问题,请参考以下文章

使用动画 UIImageView 作为 iPhone 相机覆盖

使用曲线将输入范围弧形拇指连接到滑块

iPhone/iPad 相机覆盖视图自动旋转问题 UIImagePickerController

iPhone 相机图像上的 3D 模型。透明背景?

了解canvas的曲线路径,实现的简单太极图

iPhone上的自定义相机工具栏