3

我有一个习惯MKOverlayMKOverlayView. 创建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 的评论,我做了一些测试,并意识到我需要删除CGContextSetAlpha()并只需设置alphaMKOverlayViewalpha 属性。我现在可以更改alpha初始化的外部并给我我需要的东西。

于 2013-05-02T20:59:07.797 回答