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 约束,
也可以帮助
我在 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 约束, 也可以帮助