MKMapView未填充视图(iOS)

时间:2013-08-31 10:53:44

标签: ios objective-c uinavigationcontroller mkmapview

我正在以编程方式创建视图。视图非常简单,因为它只包含一个MKMapView,我想填充屏幕(顶部的导航栏除外)。

以下是我正在设置的MKMapView:

- (void)setupMapView
{
    mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
    mapView.delegate = self;
    mapView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

    [self.view addSubview:mapView];
}

然而,MKMapView似乎并未填满整个屏幕。如果您查看此屏幕截图的顶部,则地图顶部与导航栏底部之间会有间隙(由UINavigationController添加)。

enter image description here

请有人建议为什么会发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

视图的框架(self.view.frame)可能在y位置有一个偏移。这是为了在超视图坐标空间中正确定位它。将该框架复制到新视图时,这是不合适的,因为您正在移动到不同的坐标空间。

在99.9%的情况下使用的便宜替代方案是使用视图bounds代替:

mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];

因为这通常有origin零和视图的完整size