2013-08-16 29 views
0

我正在做一個視圖控制器左側邊欄容器視圖和主容器視圖是一個導航控制器。如何通過自動佈局移動兩個子視圖控制器?

下面是它的照片: enter image description here

我使用自動佈局,所以我纔可以使用約束。

如何讓屏幕只顯示該視圖控制器的一部分? 我無法更改框架,因爲我正在使用自動佈局...

+0

您希望顯示哪個部分? – Jeff

+0

正確的容器視圖。然而,它結束了向我展示這... http://imgur.com/qpVPShX –

+0

所以你想要左邊的容器的寬度變爲0,有效嗎?或者,也許X原點向左移動,以便正確的容器是唯一可見的東西? – Jeff

回答

0

首先,嘗試調整包含視圖的框架(持有這兩個容器的框架)以將它向左移動。

從理論上講,它只是[rightContainerView superview]

如果不爲你工作時,你可以通過被在任視圖設置和刪除/調整,直到你得到你想要的佈局約束總是重複。您可以保留您在視圖控制器上的數組中刪除的約束,然後在需要恢復時添加它們。

[view constraints]

+0

但是不是自動佈局的規則,你不接觸框架? –

+0

不一定。自動佈局的目的是讓您在需要自動佈局佈局時不必觸摸視圖的框架。當您需要顯式移動視圖時,您仍然必須顯式移動視圖。如果你想改變約束條件,你當然可以隨時做到這一點。但是,這聽起來像你只是想移動一個視圖,然後回來,而其他部分之間的關​​系完好無損。 – Jeff

+0

如果您有一段時間,WWDC 2012和2013中涵蓋自動佈局的視頻非常有助於澄清許多最常見的自動佈局用例。 – Jeff

0

您只需調整約束的常數參數。所以你會希望你的兩個容器視圖對superview的頂部和底部有約束。正確的容器應該固定在超級視圖的右側,並且從左側容器視圖的右側到右側(但沒有固定寬度)有0長度限制。給左邊的容器視圖一個約束到superview的左邊緣和一個寬度約束。這應該給你足夠的限制來定義你的出發點。讓一個IBOutlet左邊容器視圖的約束到超級視圖的左邊緣(讓我們稱它爲leftCon)。然後,當您想要將左側容器視圖從屏幕左移到左側時,請更改其左側約束的常量值:

self.leftCon.constant = -200; // this will move it 200 point to the left, and the right view will expand by 200 points. 
+0

這使得我的標題查看看起來像在這張圖片中被揉成一團...... http://i.imgur.com/DxDbux0.png我唯一在那裏的是一個titleView,它有一個圖像(aspectFit)和一個搜索navigationItem導航欄的右上角。 –

+0

@AnthonyGlyadchenko,我不確定我在圖像中尋找什麼。當左視圖移開時你想要發生什麼?你是否希望擴大正確的視圖,或者當兩個視圖都在屏幕上時隱藏其中的一些內容,以及何時右側視圖移動以填充隱藏內容顯示的屏幕? – rdelmar

相關問題