2017-01-10 193 views
1

我對Map Kit View有問題設置約束。將約束添加到地圖視圖

這裏是我當前的約束截圖:

enter image description here

然而,當我切換到另一個屏幕大小,的MKMapView沒有相應調整,雖然具有完全相同的約束標籤的行爲與預期:

enter image description here

能否請你告訴我,我究竟做錯了什麼?

這裏是Xcode項目:

https://dl.dropboxusercontent.com/u/18149046/Test.zip

+0

我不明白你的問題或你的「問題」。你遇到了什麼錯誤?你確切的問題是什麼?你期望的結果是什麼,你實際得到了什麼?圖片會有幫助,因爲你的約束看起來很好。 –

+0

我編輯了這個問題,並按照您的建議提供了額外的屏幕截圖。我希望現在更清楚。(並且對我的英語感到抱歉) – lukas

+0

界面生成器告訴你在屏幕左邊的樹形視圖中的問題(紅色箭頭對着現場),但我現在可以看到你有兩個相互衝突的約束:你告訴'MKMapView'垂直設置大小,使其「從屏幕底部開始259點」和「從TableView頂部開始0點」。這些衝突。刪除'屏幕底部259點'的約束。如果你發現這很困難,那麼我強烈建議你閱讀文檔或找一個教程。 –

回答

0

我無法打開你的故事板 - 它只是給了我死亡的旋轉的皮球,所以我寫了我自己。像往常一樣與自動佈局,有很多種方法來實現最終的結果,但每個解決根本的問題是:

  1. 既不是MKMapView也不是UITableView有一個固有大小(標籤確實有一個內在的大小)。
  2. 你需要以固定UITableViewy positionheightMKMapView

所以我表明這樣做的兩種方式來指定MKMapView一個height

方法1立式UIStackView

  • 釘住UIStackView到版式參考/你的SuperView
  • 設置的邊緣內

    1. 嵌入MKMapViewUITableView:(我的首選方法:使用UIStackView)屬性 - >分配到Fill Equally

    這樣做的好處是:你可以自定義內IB直接爲不同尺寸大小的佈局,並且沒有「神奇」數字,所以它適用於所有尺寸等級沒有變化

    Example 1: Main Layout Window

    Example 1: StackView Utility Window Settings

    方法2(硬編碼的高度成用於MKMapView容器視圖):

    1. 添加UIView並放置MKMapView內它
    2. 將尺寸檢查器中的自動調整彈簧設置爲MKMapView,以箭頭顯示爲紅色(並且如果已設置,則取消阻止I-Bars);請參閱下面的圖片
    3. 設置包含MKMapViewUIView的高度;在我的例子中,我硬編碼300
    4. 引腳的UIView包含MKMapView到前置,頂部佈局指南/上海華邊線
    5. 引腳包含MKMapView頂端UITableView
    6. 釘住UITableViewUIView對前置,底部佈局指南/上海華邊線

    Example 2: Main Layout Window Example 2: MKMapView Size Inspector

    這有缺點,您可能需要根據不同的尺寸iDevices調整MKMapView高度約束(儘管您可能能夠將約束更新爲SuperView的一部分;我沒有檢查)

    在這兩個我的例子,我給一個heightMKMapView然後定義y positionUITableViewheight

    如果您正在尋找一個詳細解釋Autolayout的教程(如果文檔沒有使一切變得清晰),那麼我建議iTunesU上的Developing iOS 9 Apps with Swift,但互聯網上有大量的數字。

  • +0

    謝謝!所以我明白,即使應用了相同的約束條件,Map View和Labels也不會以相同的方式運行。我不知道堆棧視圖功能,它使這更容易!我非常感謝你的幫助。 – lukas