我正在以编程方式创建视图。视图非常简单,因为它只包含一个MKMapView
,我想填充屏幕(顶部的导航栏除外)。
以下是我正在设置的MKMapView:
- (void)setupMapView
{
mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
mapView.delegate = self;
mapView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[self.view addSubview:mapView];
}
然而,MKMapView
似乎并未填满整个屏幕。如果您查看此屏幕截图的顶部,则地图顶部与导航栏底部之间会有间隙(由UINavigationController
添加)。
请有人建议为什么会发生这种情况以及如何解决这个问题?
答案 0 :(得分:3)
视图的框架(self.view.frame
)可能在y
位置有一个偏移。这是为了在超视图坐标空间中正确定位它。将该框架复制到新视图时,这是不合适的,因为您正在移动到不同的坐标空间。
在99.9%的情况下使用的便宜替代方案是使用视图bounds
代替:
mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
因为这通常有origin
零和视图的完整size
。