2013-08-31 50 views
1

我正在以編程方式創建視圖。該視圖非常簡單,因爲它只包含一個MKMapView,我想填滿屏幕(頂部的導航欄除外)。MKMapView未填充視圖(iOS)

下面是我在做什麼來設置的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

請會有人提出爲什麼發生這種情況,我該如何解決?

+0

在什麼時候調用setupMapView? – Kirsteins

回答

3

視圖的框架(self.view.frame)在y的位置可能有偏移量。這是將其正確放置在其超級座標空間中。當您將該框架複製到您的新視圖時,這是不合適的,因爲您正在移動到不同的座標空間。

將在99.9%或情況下工作

的廉價替代品是使用視圖bounds代替:

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

因爲這通常具有零origin和視圖的全size

+0

非常感謝 - 完全忘記了可能存在抵消! –