简单的 iOS MKMapView 上面的半透明覆盖层,使用 MKOverlay 和 MKOverlayView 实现覆盖整个地图,具有可自定义的颜色和透明度值。
初始化并在您的 MKMapView 对象中添加 MKMapDimOverlay
。
- (void)addDimOverlay {
MKMapDimOverlay *dimOverlay = [[MKMapDimOverlay alloc] initWithMapView:self.mapView];
[self.mapView addOverlay: dimOverlay];
}
然后在地图视图的 mapView: viewForOverlay:
代理方法中,实例化并返回 MKMapDimOverlayView
。您可以自定义覆盖层颜色和透明度。
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay {
if([overlay isMemberOfClass:[MKMapDimOverlay class]]) {
MKMapDimOverlayView *dimOverlayView = [[MKMapDimOverlayView alloc] initWithOverlay:overlay];
dimOverlayView.overlayAlpha = 0.3;
dimOverlayView.overlayColor = [UIColor magentaColor];
return dimOverlayView;
}
return nil;
}
或者,您可以直接将 MKMapDimOverlay.h
、MKMapDimOverlay.m
、MKMapDimOverlayView.h
和 MKMapDimOverlayView.m
源文件添加到您的项目中。
MKMapDimOverlay.h
、MKMapDimOverlay.m
、MKMapDimOverlayView.h
和 MKMapDimOverlayView.m
拖放到您的项目(使用“Product Navigator view”)。如果 extracted 代码存档不在项目外部,请确保选择Copy items。#import "MKMapDimOverlay.h"
和 #import "MKMapDimOverlayView.h"
在任何需要的位置包含 MKMapDimOverlay。您还可以将 MKMapDimOverlay 作为静态库添加到您的项目中或工作区中。
MKMapDimOverlay.xcodeproj
拖放到您的项目或工作区(使用“Product Navigator view”)。libMKMapDimOverlay.a
。您可能还需要将 MKMapDimOverlay
添加到“Target Dependencies”列表中。#import "MKMapDimOverlay.h"
和 #import "MKMapDimOverlayView.h"
在任何需要的位置包含 MKMapDimOverlay。此代码根据 MIT 许可证的条款和条件分发。