为什么要获取ContainerView
在有些需求中,要求一个Annotation上添加一个View并且要处于另外一个Annotation的下面,因为Annotation本身只有一个View接收Image,想要实现这个效果旧代码采取了
- 每个Annotation都做两个,添加在底下的那个Annotation上
感觉不是优秀的处理方法,所以通过IDE观察View Tree,可以发现,所有的AnnotationView都加在一个共同的ContentView上,整个MapView的结构关系为
1 |
|
所以我们可以简单的通过superView来获得 AnnotationContainerView 如果在这上边添加View,就可以保证其处于所有AnnotationView底层
获取代码
1 | //保存一个指向ContainerView的弱指针 |
根据需求补充
如果仅仅是完成第一段所说的需求,也可以通过监控代理,把每次特定的View使用函数置底,来做到让其显示在所有View底部
1 | UIView *view = [_mapView viewForAnnotation:_annotation]; |