我正在为 iOS 7 更新 iOS 6 应用程序,发现在 iOS 7 中处理覆盖的方式已经完全改变。
我们在整个地图上绘制了一个浅灰色的叠加层。在 iOS 6 中一切正常,在 iOS 7 中我们没有覆盖。
在viewDidLoad
我有以下内容:
CLLocationCoordinate2D worldCoords[4] = { {90,-180}, {90,180}, {-90,180}, {-90,-180} };
MKPolygon *worldOverlay = [MKPolygon polygonWithCoordinates:worldCoords
count:4];
[self.mapView addOverlay:worldOverlay];
然后,对于 iOS 6 。. .
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
if (![overlay isKindOfClass:[MKPolygon class]]) {
return nil;
}
MKPolygon *polygon = (MKPolygon *)overlay;
MKPolygonView *view = [[MKPolygonView alloc] initWithPolygon:polygon];
view.fillColor = [[UIColor darkGrayColor] colorWithAlphaComponent:0.4];
return view;
}
对于 iOS 7 。. .
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
if (![overlay isKindOfClass:[MKPolygon class]]) {
return nil;
}
MKPolygon *polygon = (MKPolygon *)overlay;
MKPolygonRenderer *renderer = [[MKPolygonRenderer alloc] initWithPolygon:polygon];
renderer.fillColor = [[UIColor darkGrayColor] colorWithAlphaComponent:0.4];
return renderer;
}
使用断点,我验证了该mapView:rendererForOverlay:
方法正在被调用,并且renderer
它返回的对象具有fillColor
正确设置的属性。
关于为什么我们没有看到覆盖的任何想法?