1

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

这是我正在做的设置 MKMapView:

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

    [self.view addSubview:mapView];
}

但是,MKMapView似乎并没有填满整个屏幕。如果您查看此屏幕截图的顶部,则地图顶部和导航栏底部之间存在间隙(由 添加UINavigationController)。

在此处输入图像描述

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

4

1 回答 1

3

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

可以在 99.9% 或情况下使用的廉价替代方法是使用视图bounds

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

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

于 2013-08-31T11:03:49.160 回答