旋转后MKAnnotationView标注未正确放置

时间:2017-02-06 18:43:29

标签: ios rotation mkmapview mkannotation

如果我将手机从垂直正常旋转到垂直紧凑时显示标注,则标注会在旋转后部分位于导航栏下方。

如何让标注最终完全封闭在地图中?

Callout Cuff Off 这是垂直小巧的手机。我出于专有原因切断了部分屏幕。

编辑2

当地社区成员发布了以下代码,以防止放大我在下面投诉的willTransitionTo

if let annotation = self.mapView.selectedAnnotations.first {
    var region = self.mapView.region
    region.center = annotation.coordinate
    self.mapView.setRegion(region, animated: true)
}

它像一个冠军一样防止缩放,只会导致居中。不幸的是,标注仍然部分屏幕外。如果我在选择某个引脚时更改setCenter,很遗憾会导致标注以不同的方式出现在屏幕外。 (我已经找到了一些关于取消选择/选择的hacky解决方法的内容,如下所述。)

编辑1

  • 我发现由于某种原因调用setCenter也导致缩放,我找不到我造成的那个。所以,这不好。
  • 我尝试在willTransitionTo期间以注释为中心。这并没有改变标注的位置,只是缩放地图。 (见上文。)
  • 我尝试取消选择,然后在willTransitionTo中重新选择注释。我在标注消失和再现之间长时间停顿。此外,还有缩放(见上文)。 然而,标注位于地图的框架内。由于“闪光”和缩放,我不会使用此选项。 (让我生病了。)

旧建议答案

虽然我仍然认为这是一个有效的点

  • 地图中包含更多内容的情景中的SE太短,无法显示功能地图。

我尝试过什么

    未调用
  • regionDidChange,然后旋转设备
  • 我试图在旋转时检查注释视图的框架(willTransitionTo)。框架已包含在地图框架中
  • 我确认地图视图的顶部固定在顶部布局指南
  • 我查看了视图层次结构调试器,看起来有三个“私有”元素的原点位于地图视图之外,但我不知道如何处理这些信息。 (UIView中包含的MKPinAnnotationView_UIPopoverView以及UIView中包含的UIView中包含的第一个_MKCalloutBackgroundMaskView
  • 我没有在viewForAnnotation
  • 中设置特定的框架

其他可能相关的注释

  • 我在改变canShowCallout上的属性时做了一些奇怪的事情,因为我想在选择后将引脚置于引脚上。但问题出在旋转上,并且在旋转时不会再调用此代码。
  • 我确实需要考虑“风景”中的SE,这可能是问题的一部分。

感谢所有帮助。特别是在阅读方向上显示等等。

1 个答案:

答案 0 :(得分:0)

一位同事向我指出了answer to MKAnnotation image offset with custom pin image

我现在正在设置

annotationView.layer.anchorPoint = CGPoint(x: 0, y: 0)
<{1>}中的

,它正在运作。

老实说,我不明白为什么这会解决这个问题,所以评论/编辑/解答解释为什么会受到高度赞赏。