ios - MKMapView 不填充 View (iOS)

标签 ios objective-c uinavigationcontroller mkmapview

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

这是我正在做的设置 MKMapView:

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

    [self.view addSubview:mapView];
}

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

enter image description here

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

最佳答案

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

可以在 99.9% 或案例中使用的廉价替代方法是使用 View bounds反而:

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

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

关于ios - MKMapView 不填充 View (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18547339/

相关文章:

ios - swift 3 : How to access the value of matrix_float3x3 in a 48-byte CFData?

ios - 使用 UIIImagePicker 的 CGAffineTransform 缩放 UIImage 并保存到解析 SDK

ios - 登机牌(pk.pass 文件)- 如何修复切换时区后 iPhone 提醒时间错误的问题

ios - 如何从核心数据中获取父实体的所有子实体,以及如何将父数据用作 UITableview

ios - 内容可用推送通知在不调试时不调用委托(delegate)

objective-c - 在 Objective-C 中使用 int 数据类型

UINavigationController 和 UINavigationBarDelegate.ShouldPopItem() 与 MonoTouch

ios - 为不同的屏幕使用自定义导航栏?

ios - UINavigationController 在推送时显示状态栏的空间

ios - 如何在 Interface Builder 预览 Storyboard中显示导航栏(助理编辑器)