对于我正在构建的应用程序,我有一个自定义的“旧 map ”效果 PNG,我想将其叠加在 MKMapView View 上。不幸的是,我尝试的方法都不完全正确:
- 向 MKMapView 添加 subview (问题:PNG 的 UIImageView 被放置在注释引脚上方,这看起来很奇怪
- 使图像本身成为注释 View 并将其放置在其他 View 下方(问题:在滚动时,我必须移动注释 View 图像,并且有一段时间只有常规 map 而不是老式效果) .
我基本上想要完成的是有一个 subview ,该 subview 位于 map 图 block 上方但注释 View 下方,并且在用户滚动时保持稳定 - 有什么想法吗?
最佳答案
请注意,所有 MKMapView
subview 层次结构、注释、行为等均在内部私有(private) MKMapViewInternal 中进行。类,因此更改此结构中的任何内容(以我建议的方式或其他方式)可能会导致您的应用程序被 Appstore 拒绝。
我没有完整的解决方案,只是一个想法。我的想法是使覆盖 View 与注释 View 具有相同的 super View ,并确保注释将放置在我们的覆盖层上。在 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];
}
}
此代码完成了您想要的一半 - 您将获得一个放置在 map 图 block 和注释之间的 View 。剩下的任务是根据 map 滚动/缩放更改自定义叠加 View 框架(如果我找到方法,我会发布)。
关于iphone - 将 subview 添加到 map 上方但注释 View 下方的 MKMapView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622633/