2013-07-31 169 views
8

爲了支持縱向和橫向爲UIView這樣的:可以自動佈局這個(附圖)嗎?

+-------------------+ 
    | +---------------+ | 
    | |    | | 
    | |  Fixed  | | 
    | |  size  | | 
    | |  Square | | 
    | |    | | 
    | +---------------+ | Protrait 
    | +---------------+ | 
    | | Flexible C | | 
    | +---------------+ | 
    | +---+  +---+ | 
    | | A |  | B | | 
    | +---+  +---+ | 
    +-------------------+ 

    +----------------------------------+ 
    | +---------------+ +------------+ | 
    | |    | | Flexible | | 
    | | Fixed  | |  C  | | 
    | |  size  | +------------+ | 
    | | Square  | +---+ +---+ | 
    | |    | | A | | B | | 
    | +---------------+ +---+ +---+ | 
    +----------------------------------+ 
       Horizontal 

我需要手動重新定位在willRotateToInterfaceOrientation子的看法?或者可以Autolayout自動爲我做?

  • B是一個按鈕總是停留在右下
  • A相對定位以B一個按鈕(優選對準的C左側)
  • C爲文字,大小是靈活
  • AB低於C
+0

我沒有看到autolayout如何在沒有自定義代碼的情況下做到這一點。但我可能是錯的。你只需要刪除並設置一個約束。在旋轉到橫向時,移除柔性C和固定尺寸的正方形之間的垂直對齊約束,並向c添加頂部對齊約束 – Farthen

回答

6

在thi在這種情況下,您應該能夠自動完成大部分佈局工作,但在旋轉時會稍微進行一些調整。

我會建議的是包含意見A,B和C在另一個UIView。這樣,取決於方向的佈局是獨立的從靈活大小的佈局。它也使編程更簡單的代碼!

然後你鋪陳方視圖和容器視圖有點像這樣:

H:|-10-[squareView] 
V:|-10-[squareView] 
H:[containerView]-10-| 
V:[containerView]-10-| 
squareView.width == squareView.height 

注意,方觀點總是與左,上海華盈的頂部對齊,而容器視圖與對齊底部和右側。對於縱向,則可以添加這些約束:

V:[squareView]-10-[containerView] 
H:[squareView]-10-| 
H:|-10-[containerView] 

而對於橫向方向,你會顛倒這些制約因素:

H:[squareView]-10-[containerView] 
V:[squareView]-10-| 
V:|-10-[containerView] 

這只是整體佈局,使的該撓性尺寸容器視圖的子視圖取決於您。希望這可以幫助!

相關問題