我想知道是否有其他人有问题MKMapView(或者它可能与许多其他视图有关?)做了一件奇怪的事情,它在我第一次加载屏幕时默认为1000x1000。当我转到另一个屏幕并转回地图屏幕时,它实际上跟进了我所有的约束。
Xcode7没有发生这种情况,我想知道是否有人知道Xcode8中存在已知的错误或什么?
MapKitView以编程方式加载,并作为具有约束的View中的子视图添加。
MKMapView *mapkitView = [[MKMapView alloc] initWithFrame:self.aConstrainedView.frame];
[self.mapkitView setDelegate:self];
[self.mapkitView setShowsUserLocation:YES];
[self.mapkitView setRotateEnabled:NO];
[self.aConstrainedView addSubview:self.mapkitView];
这可能与Autoresizing issue in Xcode 8相关吗?
答案 0 :(得分:1)
您的初始化者应该使用其超级视图的bounds
,而不是frame
:
MKMapView *mapkitView = [[MKMapView alloc] initWithFrame:self.aConstrainedView.bounds];
在此行和调试器中设置断点:
(lldb) po self.aConstrainedView.bounds
确保宽度和高度正确。如果您要在viewDidLoad中添加地图视图,那就太早了。你应该覆盖:
- (void)viewDidLayoutSubviews {
dispatch_once(
// Add map view here
);
}
并在那里添加您的代码,因为在您的子视图根据您的约束布局后调用它。