在地图视图上获取注释框架

时间:2015-08-17 23:21:30

标签: ios swift mkmapview mkannotation

在我的应用中,我有自定义注释div { height:60px; width:200px; vertical-align:middle; display:table-cell; overflow:hidden; background: no-repeat center url('http://www.w3schools.com/css/klematis4_big.jpg') ; } 是一个循环leftCalloutAccessoryView。这在代码中完美地在模拟器中工作:

UIView

当我在实际设备上运行应用程序时出现问题。它在(我相信)6和6 Plus上工作正常,但在4和5的底部重叠。

有什么办法可以获得注释的尺寸吗?

2 个答案:

答案 0 :(得分:1)

斯威夫特3:

要在MKMapView中获取MKAnnotationView的帧,首先需要对MKAnnotation的引用。然后做:

if let annotationView = self.mapView.view(for: annotation) {
    let frameOfAnnotationViewInMapView = annotationView.frame
}

此外,如果您想在屏幕上显示MKAnnotationView的框架,请执行以下操作:

let frameOfViewInSuperview = self.mapView.convert(frameOfAnnotationViewInMapView, to: self.mapView.superview?.superview?.superview?.superview?.superview?.superview?.superview?.superview?.superview?.superview?.superview?.superview?.superview?.superview?.superview)

您需要调用的次数.superview将取决于您的MKMapView嵌套的深度。就我而言,它嵌套得很深。

答案 1 :(得分:0)

您可以将帧从superview转换为窗口:

let frame = convertRect(rideTimeView.frame, toView: UIApplication.sharedApplication().delegate!.window!)