2013-05-02 2 views
2

사용자 정의 MKOverlayMKOverlayView이 있습니다. MKOverlayView을 만들 때, 나는보기의 alpha을 설정할 수 있습니다MKOverlayView 및 해당 알파 변경

-(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을 변경할 수 있어야합니다.

어떻게하면됩니까?

아직 코어 그래픽을 많이 사용하지 않았습니다.

+1

MKOverlay를 서브 클래 싱하고 있습니까? 그렇다면 [self setAlpha : .7]; –

+0

MKOverlay에는 알파 속성이 없습니다. – Padin215

+0

그러나 MKOverlayView 않습니다. – Padin215

답변

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()을 제거하는 데 필요한 그냥 MKOverlayView의 알파 속성을 사용하여 alpha을 설정 깨달았다. 이제 초기화 외의 alpha을 바꿀 수 있으며 필요한 것을 제공합니다.