3

私には習慣がMKOverlayありMKOverlayViewます。がMKOverlayView作成されるalphaと、ビューのを設定できます。

-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
    DatasetOverlay *datasetOverlay = (DatasetOverlay *)self.overlay;

    UIImage *image = [UIImage imageWithData:datasetOverlay.imageData];

    CGImageRef imageReference = image.CGImage;

    MKMapRect theMapRect = [self.overlay boundingMapRect];
    CGRect theRect = [self rectForMapRect:theMapRect];

    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextTranslateCTM(context, 0.0, -theRect.size.height);
    CGContextSetAlpha(context, 1);
    CGContextDrawImage(context, theRect, imageReference);
}

alphaしかし、描画後にビューを変更できるようにしたいです。

どうやってやるの?

私はまだ Core Graphics をあまり扱っていません。

4

1 に答える 1

0
-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
    DLog(@"Fired");
    DatasetOverlay *datasetOverlay = (DatasetOverlay *)self.overlay;

    UIImage *image = [UIImage imageWithData:datasetOverlay.imageData];

    CGImageRef imageReference = image.CGImage;

    MKMapRect theMapRect = [self.overlay boundingMapRect];
    CGRect theRect = [self rectForMapRect:theMapRect];



    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextTranslateCTM(context, 0.0, -theRect.size.height);
//    CGContextSetAlpha(context, 1);
    CGContextDrawImage(context, theRect, imageReference);
}

K さん、@ttarules のコメントのおかげで、いくつかのテストを行ったところ、 を削除して を の alpha プロパティで設定する必要があることに気付きましたCGContextSetAlpha()。初期化の外側を変更して、必要なものを提供できるようになりました。alphaMKOverlayViewalpha

于 2013-05-02T20:59:07.797 に答える