我正在尝试在我的应用程序中显示在MapKit地图上构建入口的注释。
为此,我创建了一个实现EntranceAnnotation
的类MKAnnotation
,以便稍后为这些实现自定义MKAnnotationView
。出于这个问题的目的,虽然我在尝试用简单的MKPointAnnotation
来解决这个问题时也遇到了问题。
我正在使用MKMapView
的自定义子类,其中包含以下代码。
let entranceAnnotations: [MKPointAnnotation] = selectedBuilding.entrances.map {
entrance in
let ann = MKPointAnnotation()
ann.coordinate = entrance.location
return ann
}
addAnnotations(entranceAnnotations)
如果我在调用mapView
之前和之后检查addAnnotations
注释列表,我可以看到添加的注释肯定出现在列表中。
我目前没有覆盖view(for annotation: MKAnnotation) -> MKAnnotationView?
,因为对于简单的MKPointAnnotation
来说这不是必需的。但即使我这样做,并返回具有给定颜色的MKPinAnnotationView
的新实例,这似乎没有任何效果。无论我在做什么,这些注释都没有出现在我的地图上。
这里有什么我可能会遗失的吗?即使尝试添加一个简单的新注释也无法产生效果。
let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2D(latitude: 51.028500, longitude: 13.728653)
addAnnotation(annotation)
如果它有所作为,我试图在Xcode 8 Beta 3的iOS 10 Beta 14A5309d上运行它。
答案 0 :(得分:0)
我自己遇到了这个问题。我的MKAnnotationView
的自定义子类依赖于在我的覆盖initWithFrame:
和iOS 10中完成的一些初始化,通过调用initWithAnnotation:reuseIdentifier:
初始化annotationView最终将调用到initWithFrame:。但是,从iOS 10开始,永远不会调用initWithFrame:
。结果是我的自定义注释的框架为(0, 0, 0, 0)
并且没有显示。添加
[self setFrame:CGRectMake(0, 0, someWidth, someHeight];
在initWithAnnotation:reuseIdentifier:
内部使注释再次出现在iOS10下。显然需要一些工作来映射到等效的Swift解决方案,但这可能是你的问题。在初始值设定项中设置断点,看看哪个被击中!