2015-05-11 158 views
0

我有一個SplitViewController與一個mapview作爲detailViewController。showAnnotations當旋轉變化

我向mapview添加了多個註釋。在添加它們之後,我會調用showAnnotations:animated:方法放大/縮小地圖,以便所有註釋都顯示在地圖的可見部分。

mapView.showAnnotations(mapView.annotations, animated: true) 

enter image description here

現在我需要在地圖上重新調整自己當方向改變,因爲當你把iPad的肖像的MapView的可視面積減少。所以我在viewWillTransitionToSize:withTransitionCoordinator:方法中調用相同的showAnnotations:animated:方法,該方法在方向更改時觸發。但它不能按預期工作。

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
    mapView.showAnnotations(mapView.annotations, animated: true) 
} 

enter image description here

我如何讓它重新調整方向的變化是什麼時候?

Demo project

+0

您確定地圖視圖在方向更改時是否正確更改其框架(使用自動佈局或其他)?如果不是,縱向顯示,地圖可能會超出屏幕,導致縮放看起來不正確。 – Anna

+0

我不會手動調整視圖的大小。這一切都由操作系統本身處理。 – Isuru

+0

是的,但操作系統執行故事板/ xib所要做的事情:按照設置的自動佈局約束或自動調整大小或大小類別或正在使用的任何方法。旋轉發生後,記錄地圖視圖的框架,看看它是否在屏幕的邊界之外。不要以爲操作系統神奇地知道你想要什麼。 – Anna

回答

0

viewDidLayoutSubviews方法中調用showAnnotations完美的作品。

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    mapView.showAnnotations(mapView.annotations, animated: true) 
}