0

ハイ、

Objective Cでタッチすると色が変わるものを作成するにはどうすればよいですか。画面全体をタッチ可能にして、指で何かを描きたいです。どこに触れても色が変わるはずです。それを行う最良の方法は何ですか?タッチの座標を取得するために、すでにtouchesMovedを実装しています。

UITouch * touch = [touches anyObject];
CGPoint pos = [touch locationInView: [UIApplication sharedApplication].keyWindow];

サンプルコードはどれもありがたいです。

前もって感謝します、

次のコードがありますが、触れた場所には何も出力されません

-(void)setPaths:(NSMutableArray *)paths
{
    self.paths =[[NSMutableArray alloc]init];
}

-(void)setAPath:(UIBezierPath *)aPath
{
  self.aPath=[UIBezierPath bezierPath];
}

-(void) drawRect:(CGRect)rect{
    [super drawRect:rect];
    [[UIColor blackColor] set];
    for (UIBezierPath *path in paths) {
        [path stroke];
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.paths addObject:self.aPath];

    //self.aPath=[UIBezierPath bezierPath];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

    UITouch * touch = [touches anyObject];
    CGPoint pos = [touch locationInView: [UIApplication sharedApplication].keyWindow];
    [self.aPath addLineToPoint:[touch locationInView:self]];
    // [self.aPath addLineToPoint:[touch locationInView:touch]];

    NSLog(@"Position of touch: %.3f, %.3f", pos.x, pos.y);
}

@end
4

2 に答える 2

2

タッチが開始したら、UIBezierPath を作成します。

self.myPath = [UIBezierPath bezierPath];

次に、タッチが移動するたびに、パスにポイントを追加します。

 [self.myPath addLineToPoint:[touch locationInView:self]];

タッチが終了したら、drawRect でパスを描画します。

-(void) drawRect:(CGRect)rect{    
[super drawRect:rect];  
    [[UIColor blueColor] set];
    for (UIBezierPath *path in paths) {
          [path stroke];
    }
}

ここですべてのドキュメントを見つけてください:

UIBezierPath クラス リファレンス

于 2013-10-04T09:44:01.957 に答える
0

drawRect:方法を変えるかもしれません。次の 2 行を挿入します。

[[UIColor blackColor] setStroke];
[path stroke];

[self setNeedsDisplay];内部に行を追加した後に追加する必要がありますtouchesMoved:

次のチュートリアルに合格したところです。問題は解決するはずです。また、長い線を描画する場合にコードが怠惰にならないようにコードを改善する方法についても説明します

于 2013-10-04T13:21:05.557 に答える