如何自动调整mkmapview的大小以在方向更改时填满整个屏幕?

时间:2013-11-08 23:36:45

标签: ios resize mkmapview orientation mapkit

- (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的方向从横向更改为纵向时,地图视图的大小不会发生变化。我希望它能填满整个视图。我试过搜索谷歌和stackoverflow寻求解决方案,但我没有运气。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:6)

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

非常简单,无需代码。