gpt4 book ai didi

iphone - 将颜色/Alpha/滤镜更改为 MKMapView iOS 6

转载 作者:行者123 更新时间:2023-12-03 18:50:28 25 4
gpt4 key购买 nike

有没有办法将 CI 过滤器应用于 MKMapViews?或者类似的东西?我试图不让我的基于 map 的应用程序看起来那么米色。有没有办法应用RGBA滤镜?

任何帮助/教程方向表示赞赏。我在 native 文档中没有看到任何有关更改 MKMapView 外观的内容。

最佳答案

我认为您无法在将图像渲染到屏幕上之前对其进行更改。但是,您可以在整个世界上使用 MKOverlayView 来达到相同的效果。以下内容应该可以工作,但请将其视为伪代码,只是为了让您入门。

@interface MapTileOverlay : NSObject <MKOverlay>
@end

@implementation MapTileOverlay
-(id)init {
self = [super init];
if(self) {
boundingMapRect = MKMapRectWorld;
coordinate = MKCoordinateForMapPoint(MKMapPointMake(boundingMapRect.origin.x + boundingMapRect.size.width/2, boundingMapRect.origin.y + boundingMapRect.size.height/2));
}
return self;
}
@end


@interface MapTileOverlayView : MKOverlayView
@end

@implementation MapTileOverlayView
-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
CGContextSetBlendMode(context, kCGBlendModeMultiply); //check docs for other blend modes
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 0.5); //use whatever color to mute the beige
CGContextFillRect(context, [self rectForMapRect:mapRect]);
}
@end

您需要一些实现 MKMapViewDelegate 协议(protocol)的类来创建 View ...

@interface MapViewDelegate : NSObject<MKMapViewDelegate>
@end

@implementation MapViewDelegate
-(MKOverlayView*)mapView:(MKMapView*)mapView viewForOverlay:(id<MKOverlay>)overlay {
if([overlay isKindOfClass:[MapTileOverlay class]]) {
return [[MapTileOverlayView alloc] initWithOverlay:overlay];
}
return nil;
}

最后,初始化 map 后,您需要在 map 上设置委托(delegate)并添加叠加层...您必须在添加叠加层之前设置委托(delegate)...

MapViewDelegate* delegate = [[MapViewDelegate alloc] init];  //you need to make this an iVar somewhere
[map setDelegate:delegate];
[map addOverlay:[[MapTileOverlay alloc] init]];

关于iphone - 将颜色/Alpha/滤镜更改为 MKMapView iOS 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13364374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com