1

UIViews を使用して背景色を変更しているときに、コードが機能していました。今、楕円で試してみましたが、表示されませんか? コードは次のとおりです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
        overlayView = [[[UIView alloc] initWithFrame:self.view.bounds] autorelease];
        overlayView.backgroundColor = [UIColor colorWithWhite:255.0f alpha:1.0f];
    [self.view addSubview:overlayView];
    reda = 0;
    bluea = 0;
    greena = 255;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    touchPoint = [touch locationInView:self.view];
    previousPoint = touchPoint;

}

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    touchPoint = [touch locationInView:self.view];
    if (abs((previousPoint.x-touchPoint.x)) > 20) {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Warning!" message:@"Too Fast!" delegate:self cancelButtonTitle:@"Okay." otherButtonTitles:nil];
        [alertView show];
        [alertView release];
    }
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(contextRef, reda/255.f, greena/255.f, bluea/255.f, 1.0f);
    CGContextFillEllipseInRect(contextRef, CGRectMake(touchPoint.x, touchPoint.y, 20, 20));
    [overlayView addSubview:contextRef];

    if ((greena != 0) && (bluea == 0)) {
        greena += -5;
        reda += +5;
    }
    if ((reda != 0) && (greena == 0)) {
        bluea += +5;
        reda += -5;
    }
    if ((bluea != 0) && (reda == 0)) {
        bluea += -5;
        greena += +5;
    }
}
4

1 に答える 1

2

に電話UIGraphicsGetCurrentContextしていtouchesMoved:withEvent:ます。では、システムはグラフィックス コンテキストを作成しませんtouchesMoved:withEvent:。では、グラフィックス コンテキストのみが作成されます-[UIView drawRect:]

Apple のドキュメントで 、ビューの描画サイクルとビューのランタイム インタラクション モデルについて読む必要があります。

描画コードを に移動するかdrawRect:、独自のグラフィックス コンテキストを作成して (UIGraphicsBeginImageContextWithOptionsまたは などを使用CGBitmapContextCreate)、そこに描画してから、コンテキストからイメージを作成し、そのイメージを に割り当てることができview.layer.contentsます。

于 2012-10-06T05:12:01.217 に答える