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

MKMapView click on pin causes weird frame changes

我在 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 注释会导致它...

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

所以设置中心锚点就成功了:

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

我想这是因为我指定了 height/width 约束但没有指定定位,所以定义了 top/left 约束, 也可以帮助