0

皆さん、

必要なことを達成するために、何を学ぶ/読むべきかについての指針/指示を探しています。私は完全な解決策/答えを探しているわけではありません(もちろん準備ができていない限り:))。

私の問題は、カメラ/ビデオ ビューの上にオーバーレイを表示したいということです。オーバーレイは、全体に点がある ARC/曲線で構成されています。オーバーレイは表示されますが、ユーザーがデバイスを仰角 X (度) および方位 Y に傾けた場合にのみ表示されます。

YouTube の次の 2 つのビデオでいくつかの例を見ることが でき ます。 watch?v=oemvZl151eY時間 0:14 から終了まで (0:48)

私はクォーツ/グラフィックス/スプライトキットを使用したことがなく、これらがこれを行うのに役立つかどうかさえわからないため、どこから始めればよいかわかりません…

よろしくお願いいたします。前もって感謝します!

4

1 に答える 1

1

最も簡単なアプローチはクォーツです。CGContext描画関数を使用して円弧または曲線をUIView、カメラ ビュー上に配置する にプロットします。特定の のを簡単に取得できるため、これはUIViewのメソッド内で簡単に実行できます。これをよりよく説明するために、例を次に示します。drawRect:CGContextUIView

//
//  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

この単一のビューにすべてをプロットし、デバイスの動きに応じてその位置を調整するだけです. また、ビューを通常どおり非表示/表示することもできます (変更alphaまたはhiddenプロパティ)。更新をトリガーするには (たとえば、サテライトが位置を変更したとき)、setNeedsDisplayまたはsetNeedsDisplayInRect:メソッドを呼び出します。最適化のために、必要に応じrectて後者のパラメーター (およびメソッドの同じパラメーターdrawRect) を使用して、必要なビューの部分でのみ再描画をトリガーします (また、この四角形でのみ描画します)。

CGContextAdd...表示する必要がある曲線について:円弧、一連の直線、またはベジエ曲線のいずれであっても、描画する必要がある形状に適した関数が見つかると確信しています。

于 2013-10-20T21:27:44.340 に答える