在我的应用中,我有自定义注释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的底部重叠。
有什么办法可以获得注释的尺寸吗?
答案 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!)