0

Xcodeの勉強を始めましたが、ビューに線を引く方法がわかりません。ボタンを押すと、このコードが表示されます。

- (void)drawRect:(CGRect)rect
{        
 CGContextRef con = UIGraphicsGetCurrentContext();
 CGContextSetLineWidth(con, 5);
 CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
 CGFloat componen [] = {0.0, 0.0, 1.0, 1.0};
 CGColorRef color = CGColorCreate(space, componen);
 CGContextSetStrokeColorWithColor(con, color);
 CGContextMoveToPoint(con, 0, 0);
 CGContextAddLineToPoint(con, 100, 100);
 CGContextStrokePath(con);
 CGColorSpaceRelease(space);
 CGColorRelease(color);

}

このコードは、アプリケーションの起動時に線を引きますが、パラメーター(x1、x2、y1、y2)を使用してボタンを押したときにこのコードを開始したいと思います。このような関数を作成しました

- (void)drawLine
{   
    CGContextRef con = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(con, 5);
    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
    CGFloat componen [] = {0.0, 0.0, 1.0, 1.0};
    CGColorRef color = CGColorCreate(space, componen);
    CGContextSetStrokeColorWithColor(con, color);
    CGContextMoveToPoint(con, x1, y1);
    CGContextAddLineToPoint(con, x2, y2);
    CGContextStrokePath(con);
    CGColorSpaceRelease(space);
    CGColorRelease(color);

}

でも描くことはできません

これを行う方法?

4

3 に答える 3

0

UIView の行を追加するのは非常に簡単です。

UILabel *line = [[UILabel alloc]init];
line.textColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.5];
line.frame = CGRectMake(0, 0, 320, 1);
[self.view addSubview:line];

そして、ボタンを押して可視プロパティを制御できます。

あなたの質問はそれでよろしいですか?

于 2012-10-12T11:33:31.630 に答える
0


- (void)drawRect:(CGRect)rect { }
メソッドがシステムによって呼び出されます。ビューが読み込まれる前に、システムによって呼び出され、コンテンツが描画されます。

したがって、ビューの読み込み後に描画内容を変更する場合は、システムに drawRect メソッドを呼び出すように依頼する必要があります。したがって、関連するビューの setNeedsDisplay メソッドを呼び出す必要があります。

[myView setNeedsDisplay];

ありがとう

于 2012-10-12T11:38:05.557 に答える
0

drawRect:線を描画するかどうかを決定するようにyour を定義します。

- (void)drawRect:(CGRect)rect {
    if (self.drawLine) {
        [self drawLineWithContext: UIGraphicsGetCurrentContext()];
        self.drawLine = NO;
    }
}

ボタンがタップされたら、ビュー コントローラーにビュー パラメーターを設定させ、ビューを更新するようにシステムに指示します。

- (IBAction)doDrawing:(id)sender {
    self.drawView.drawLine = YES;
    self.drawView.x1 = 20.0;
    self.drawView.x2 = 200.0;
    self.drawView.y1 = 10.0;
    self.drawView.y2 = 350.0;
    [self.drawView setNeedsDisplay];
}
于 2012-10-12T11:48:52.373 に答える