2010-09-03 94 views
0

在我的應用程序中,我的所有控件都是在代碼中創建的。我沒有使用IB來控制。現在我想旋轉視圖到風景模式。我知道我必須爲此使用shouldAutorotate方法。但由於我沒有使用過IB,所以當它們處於橫向模式時,如何調整控件大小?我怎樣才能正確使用代碼定位他們? PLZ幫助我,這是一種重要而緊迫的事情。 thnx提前。旋轉UI查看IB

回答

1

在大多數情況下,你可以得到的觀點,只是由他們autoresizingMask屬性設置的某種組合適當地調整自己:

  • UIViewAutoresizingFlexibleLeftMargin
  • UIViewAutoresizingFlexibleRightMargin
  • UIViewAutoresizingFlexibleTopMargin
  • UIViewAutoresizingFlexibleBottomMargin
  • UIViewAutoresizingFlexibleWidth
  • UIViewAutoresizingFlexibleHeight

例如,假設您希望在它旋轉到橫向視圖的寬度增加,你希望它同利潤率相對於上,左,右兩側,屏幕的維護,你希望它的高度保持不變。這意味着在上述六個屬性中,只有寬度和底部邊距應該是靈活的。其他四個屬性是固定的。所以,你會怎麼做:

yourView.autoresizingMask = UIViewAutoResizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; 

在那些極少數情況下,當你不能得到的意見,做出相應的表現用他們autoresizingMask屬性,你可以自定義視圖將它們包裝和覆蓋該視圖的layoutSubviews方法。此方法在視圖的框架由於自轉而更改時被調用,因此您可以檢查[[UIApplication sharedApplication] statusBarOrientation]並手動更新子視圖的框架。

+0

hey thnx。我認爲這將幫助我與笏我試圖實現。我認爲autoresizing屬性會鍛鍊得很好。 – Jayshree 2010-09-03 06:26:25

0

您可以使用代碼正確定位它們,就像您可能將它們定位到原始方向一樣,例如通過設置它們的框架。

至於代碼的執行位置,請查看UIViewController的各種方向更改方法,該方法將在設備方向更改時調用。例如,您可以在willAnimateRotationToInterfaceOrientation:duration:範圍內移動/調整視圖中的控件大小。

+0

嗨。 thnx的迴應。但我關心的是,我必須爲每個對象設置幀的橫向格式嗎?我的意思是我將不得不爲每個對象設置兩次幀,即 - 縱向和橫向?這將變得很麻煩,因爲我有很多的意見,並在他們每一個很多的控制?你有什麼樣的例子或代碼能幫助我嗎? – Jayshree 2010-09-03 04:56:23