UIImageView 未显示在 MKMapView 之上

Posted

技术标签:

【中文标题】UIImageView 未显示在 MKMapView 之上【英文标题】:UIImageView not showing on top of MKMapView 【发布时间】:2014-07-20 14:36:17 【问题描述】:

在 IB 中,我在 MKMapView 顶部添加了一个 UIImageView(它横跨底部标签栏上方的整个屏幕)。 UIImageView 应代表地图图例。

我为 UIImageView 创建了一个 IBOutlet,并在我的 mapViewController 的 .m 文件中合成了它。我正在使用以下代码行以编程方式设置图像:

[legend setImage:[UIImage imageNamed:@"maplegend.png"]]; 

我希望这张图片一直出现在 MKMapView 的右下角。

但是当我运行我的项目时没有显示图像。

请指导。

【问题讨论】:

【参考方案1】:

我曾经遇到过同样的问题。我通过将视图彼此相邻而不是在视图层次结构中彼此重叠来解决它。

视图层次结构将如下所示

containerView (UIView) mapView (MKMapView) myBanner (UIImageView)

(在这种情况下为containerView.subviews == @[mapView, myBanner]

myBanner 仍然可以与 mapView 重叠,因为索引较高的视图将被放置在索引较低的视图之上。

这行不通:

containerView (UIView) myBanner (UIImageView) mapView (MKMapView)

我不是 100% 确定,但我认为 MKMapView 存在问题:它只是不希望您在其上放置子视图。

如果您还希望您的图例可点击(即不接受触摸事件),则必须为containerView 创建自己的UIView 子类并覆盖-hitTest:withEvent: 方法...

【讨论】:

啊!我正在做与您建议的相同的事情,但图像被底部的标签栏隐藏了。你的答案是正确的。谢谢!

以上是关于UIImageView 未显示在 MKMapView 之上的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView 未显示在 UITableView 标题中

UIToolbar 和 UIImageView 未显示在模拟器中

UIImageView(以编程方式创建)未显示

当我从与移动设备中的图库相同的多个 UIImageView 显示中点击 UIImageView 时,未调用 touchesBegan 方法

自定义 UITableViewCell 中的 UIImageview 未正确显示

界面构建器未显示要为 UIImageView 选择的图像