4
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:YES];

    self.mapView.frame = self.view.bounds;
    self.mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

    CLLocationCoordinate2D startCoord = CLLocationCoordinate2DMake(36.7472, -95.9594);
    MKCoordinateRegion adjustedRegion = [self.mapView regionThatFits:MKCoordinateRegionMakeWithDistance(startCoord, 10000*1609.344, 10000*1609.344)];
    [self.mapView setRegion:adjustedRegion animated:YES];
}

这就是我现在的代码。当我将 iPad 的方向从横向更改为纵向时,地图视图的大小不会改变。我希望它填满整个视图。我曾尝试在 google 和 stackoverflow 上搜索解决方案,但我没有任何运气。

任何帮助将不胜感激。

4

2 回答 2

10
-(void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
    self.mapView.frame = self.view.bounds;
}

这将确保无论何时触发视图控制器布局(例如,在自动旋转时),地图框都会调整到视图边界。

实际上,您可以将设置的框架线从 viewWillAppear 中取出,因为 viewWillLayoutSubviews 在初始设置时运行。

于 2013-11-09T00:10:51.887 回答
6

如果您使用 Autolayout,您可以: - 转到 Storyboard,然后单击您的 mapView。- 在 Storyboard 底部查找分段控件,然后单击“Pin”段。在那里,添加左、右、上和下的约束。这应该做你想要的。

非常简单,无需代码。

于 2013-11-09T01:10:59.807 回答