2013-10-20 16 views
0

伙计们,弧/仰角曲线叠加/承载了iPhone相机

我找指针/方向上应该怎么学习/为了完成我需要阅读有关。我不是在寻找一个完整的解决方案/答案(除非你已经准备好了:))。

我的问题是,我想在摄像头/视频视图呈现叠加。覆盖层包含一个ARC /曲线,其上遍布点。覆盖将在那里,但是当用户倾斜设备以仰角X(度)和轴承Y.

几个例子可以在YouTube以下两个视频中可以看出它只会显示:在时间0 http://www.youtube.com/watch?v=lRLpKZMCRHo :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...函数,你需要绘制的形状,无论是一个弧,一组直线或贝塞尔曲线。

+0

Burax,非常详细的答案谢谢你,这是一个非常好的介绍,我需要进一步研究/研究。现在,我会投票答复,并在研究/尝试你在一周中提到的内容后,我会回来并将其标记为答案。再次感谢您的介绍!欣赏它! – rkh

+0

burax,对于已故的评论感到抱歉:我已经离开了一段时间,直到现在还不能完全理解/了解您提出的解决方案。我还不执行它,我有几个问题和将不胜感激,如果你能花一分钟来回答: 1 - 你说“使用CGContext上画功能为你打下了一个UIView绘制你的圆弧曲线或相机视图“如果圆弧/视图的尺寸比屏幕尺寸大得多并根据当前设备的方位进行设置,那么这样做会起作用吗? – rkh

+0

2-卫星并不真正改变位置(对地静止),所以基于纬度/经度位置和X度(也是海拔),卫星点的曲线总是相同的。只有当轴承X和设备的高程发生变化时,曲线才会移动......(只是说) – rkh