2012-06-02 56 views
2

我有一個工作的應用程序與顯示用戶位置的MKMapView。到目前爲止,一切都很好:旋轉MKMapView

- (void)viewDidLoad { 
    ... 
    [myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 
    [myMapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES]; 
} 

現在,我讓界面旋轉:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations. 
    return YES; 
} 

如果我現在打開設備和中心到用戶位置

[myMapView setCenterCoordinate:[myMapView userLocation].coordinate animated:YES]; 

的MapView將旋轉如預期的那樣,但用戶位置不會居中,但在屏幕的底部(距離頂部的距離與縱向模式相同)。

我認爲它是居中,但...

任何想法?

回答

4

嘗試在setAutoresizingMask:中包含高度,以便當超級視圖在旋轉時更改其高度時,地圖視圖的高度將自動更改。現在,只有寬度正在調整大小,所以地圖中心的y位置不會改變。

所以這行:

[myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 

應該是:

[myMapView setAutoresizingMask: 
    (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; 


此外,你不應該需要手動中心在地圖上的位置,用戶如果要設置跟蹤模式到MKUserTrackingModeFollow(地圖會自動完成)。您可能已嘗試手動將其居中以解決高度問題,但修復自動調整掩碼應消除顯式居中的需要。

+0

好的,謝謝 - 應該已經讀過國旗名稱,直到它結束:)而關於居中:我實際上是針對不同點的中心,而不僅僅是取決於用戶輸入的用戶位置。但是,謝謝你指出這一點... – Axel