MKMapView 点击 pin 会导致奇怪的帧变化

Posted

技术标签:

【中文标题】MKMapView 点击 pin 会导致奇怪的帧变化【英文标题】:MKMapView click on pin causes weird frame changes 【发布时间】:2015-03-02 14:39:50 【问题描述】:

我在 MKMapView 上创建了非自定义的简单引脚注释,当我点击它时,我的 MapView 得到了关注:

它只发生在 ios8 上。

我发现没有 mapView 的限制 - 它工作正常。 约束很简单 - 只是在旋转设备时全屏显示。 他们是:

[self.mapView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.mapView
                                                          attribute:NSLayoutAttributeWidth
                                                          relatedBy:NSLayoutRelationEqual
                                                             toItem:self.view
                                                          attribute:NSLayoutAttributeWidth
                                                         multiplier:1.0
                                                           constant:0]];
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.mapView
                                                          attribute:NSLayoutAttributeHeight
                                                          relatedBy:NSLayoutRelationEqual
                                                             toItem:self.view
                                                          attribute:NSLayoutAttributeHeight
                                                         multiplier:1.0
                                                           constant:0]];

MapView 被添加到 ViewController.view 并且我没有收到任何关于冲突约束等的警告。

为什么会这样? 还有什么是最不公平的,为什么点击MapView 注释会导致它...

【问题讨论】:

你在这个问题上有什么进展吗?我也看到了这个问题,希望能够解决它 很久以前,我不记得细节但发布了解决方案作为答案 优秀!非常感谢,今天你从精神错乱中拯救了一个人:D 【参考方案1】:

我没有详细说明,但由于某些原因,单击注释后的 mapView 在父视图的左/上角有一个中心,

所以设置中心锚就可以了:

[self.mapView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor].active = true;
[self.mapView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor].active = true;

我猜这是因为我指定了高度/宽度约束,但没有指定定位,所以定义了顶部/左侧约束, 也可以帮助

【讨论】:

以上是关于MKMapView 点击 pin 会导致奇怪的帧变化的主要内容,如果未能解决你的问题,请参考以下文章

在 MKMapVIew 中像 MKPinAnnotation 一样绘制 Pin 查看 Pin

自定义图钉动画 - MKMapView

将 MKMapView 居中在 pin 下方的点 N 像素上

在当前用户位置放置 pin iphone mkmapview

53帧变900帧!AI让你不用昂贵的高速摄像机也能制作慢镜头,来自华为|CVPR 2021...

MKMapView:用户位置图钉颜色自动变为灰色