0

タスクは、Scrollview で使用しているカスタム マップに実行時にパスを描画することです。その後、位置座標 (緯度、経度) が更新されるたびに、実行時にパスを描画する必要があります。ここで解決しようとしている問題は、「drawrect:」メソッドで描画をコーディングする UIView のサブクラスであるクラス「グラフィックス」を作成したことです。そのため、画像上のスクロールビューのサブビューとしてグラフィックを追加すると、線が描画されますが、パスであるかのように線を描画し続ける必要があります。実行時に線を描画する必要があり、'CGContextStrokeLineSegments' メソッドの points(x,y) を更新し続ける必要があります。コード:

ビューコントローラー:

- (void)loadView {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame];
scrollView=[[UIScrollView alloc] initWithFrame:fullScreenRect];
graph = [[graphics alloc] initWithFrame:fullScreenRect];
scrollView.contentSize=CGSizeMake(320,480);

UIImageView *tempImageView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"fortuneCenter.png"]];

self.view=scrollView;
[scrollView addSubview:tempImageView2];
scrollView.userInteractionEnabled = YES;
scrollView.bounces = NO;
[scrollView addSubview:graph];
}

Graphics.m:

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
    // Initialization code
    self.backgroundColor = [UIColor clearColor];
}
return self;
}

- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGPoint point [2] = { CGPointMake(160, 100), CGPointMake(160,300)};
CGContextSetRGBStrokeColor(context, 255, 0, 255, 1);
CGContextStrokeLineSegments(context, point, 2);
}

では、実行時にどのように線を引くことができますか。今はシミュレートしているだけなので、リアルタイム データ (座標) は使用していません。ダミーデータ(x、yの座標)を使ってシミュレートしたいだけです。ボタンがあるとしましょう。ボタンを押すたびに座標が更新され、パスが延長されます。

4

3 に答える 3

1

CGPoint point[]見た目から、動的にサイズ変更できるようにするだけです。

mallocstd::vector、またはを使用して、NSMutableData追加したポイントを保存できます。次に、その配列を に渡しますCGContextStrokeLineSegments

必要なポイントが 2 つCGPoint point[2]だけの場合は、位置を保存できるように ivar に移動し、(Rich が指摘したように) これらの値 (または配列) が変更されたときに rect を適切に無効にします。

于 2012-04-06T15:25:39.983 に答える
1

最も簡単な方法は、ポイントを表すインスタンス変数をUIViewサブクラスに追加することです。次に、パスが変更されるたびに、ivar を適切に更新し、カスタム(またはそのスーパービュー) で-setNeedsDisplayorを呼び出します。その後、ランタイムは新しいパスを再描画します。setNeedsDisplayInRectUIView

于 2012-04-06T13:41:27.673 に答える
0

この話題はときどき出てくるので、独自のグラフィックス コンテキストを作成して使用するという 1 つの潜在的なソリューションに関連する一般的な概念について、より長いブログ投稿を作成しました。 drawing-in-ios-apps.html

于 2012-04-14T21:22:23.490 に答える