Zep*_*dio 17 iphone overlay subview mkmapview
对于我正在构建的应用程序,我有一个自定义的"旧地图"效果PNG,我想在MKMapView视图上叠加.不幸的是,我试图这样做的方式都不正确:
我基本上想要实现的是一个子视图,它位于maptiles上方,但位于注释视图下方,并且在用户滚动时会保持稳定 - 任何想法?
请注意,所有MKMapView子视图层次结构、注释、行为等都在内部私有MKMapViewInternal类中进行,因此更改此结构中的任何内容(以我建议的方式或其他方式)可能会导致您的应用程序被 Appstore 拒绝。
我没有完整的解决方案,只是一个想法。我的想法是使覆盖视图与注释视图具有相同的超级视图,并确保注释将放置在我们的覆盖层上。在 MKMapViewDelegate 中,我们实现:
- (void)mapView:(MKMapView *)aMapView didAddAnnotationViews:(NSArray *)views{
if (views.count > 0){
UIView* tView = [views objectAtIndex:0];
UIView* parView = [tView superview];
UIView* overlay = [tView viewWithTag:2000];
if (overlay == nil){
overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:MY_IMAGE_NAME]];
overlay.frame = parView.frame; //frame equals to (0,0,16384,16384)
overlay.tag = 2000;
overlay.alpha = 0.7;
[parView addSubview:overlay];
[overlay release];
}
for (UIView* view in views)
[parView bringSubviewToFront:view];
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码完成了您想要的一半 - 您可以在地图图块和注释之间放置一个视图。剩下的任务是根据地图滚动/缩放更改自定义叠加视图框架(如果找到方法,我会发布)。