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
プロパティが正しく設定されていることを確認しました。
オーバーレイが表示されない理由について何か考えはありますか?