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

Bee*_*nny 4 resize orientation mapkit mkmapview ios

- (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];
}
Run Code Online (Sandbox Code Playgroud)

这就是我现在的代码.当我将iPad的方向从横向更改为纵向时,地图视图的大小不会更改.我希望它能填满整个视图.我试过搜索谷歌和stackoverflow的解决方案,但我没有运气.

任何帮助都会非常感激.

jsd*_*jsd 10

-(void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
    self.mapView.frame = self.view.bounds;
}
Run Code Online (Sandbox Code Playgroud)

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

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


sco*_*aco 6

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

非常简单,无需代码.