2010-05-07 66 views
4

iPad大師:Apple希望我們支持所有的方向。我認爲一個特定的佈局應該旋轉,以便所有對象的位置相對相同,如果這看起來不太好,那麼應該重新定位,或者應該設計和構建兩個視圖。在iPad中重新定位期間將對象定位在視圖中

如果我靠內置的旋轉機構,對象要麼得到調整或他們跨越頁面的邊緣在一個方向或另一個,或者他們從視圖中完全消失。我似乎無法找到正確的設置來讓對象清晰對齊,以便在每個方向上看到它們。

重新定位會導致View Controller中出現很多if語句。所以我不認爲蘋果有這個想法。

我試圖在「willRotateToInterfaceOrientation」方法代替視圖和甚至視圖控制器,但是,要麼導致崩潰或縱向視圖橫向最終出乎意料和VV。而且,兩個視圖控制器意味着對相同視圖的編碼加倍。

必須有正確的方法來處理方向變化,但我已經搜索了互聯網和文檔和示例代碼徒勞無功的東西。這是如何正確完成的?

謝謝!

回答

0

花費一些時間在Interface Builder中瞭解什麼是「autosizing」和「size & position」do(size inspector)。它們可以分別爲每個的UILabel,按鈕,酒吧,圖片等

而且擴展到填充,方面配合,一方面填充等來配置要理解有用(屬性檢查員)。

不要忘了覆蓋shouldAutorotateToInterfaceOrientation返回YES,然後一切都應該使用單一的UIViewController和UIView的工作。

-1

由於在OranLooney.com偉大的職位,我能得到一個Java/ICEfaces的web應用程序在iPad上很好地調整。

donnothing();在window.orientationchange是有的,因爲它似乎有時沒有它的調整大小將(有時)不起作用,在你的情況下,雖然我想這是你想讓代碼啓動一個新的視圖。

// a function to parse the user agent string; useful for 
// detecting lots of browsers, not just the iPad. 
function checkUserAgent(vs) { 
    var pattern = new RegExp(vs, 'i'); 
    return !!pattern.test(navigator.userAgent); 
} 
if (checkUserAgent('iPad')) { 
    // iPad specific stuff here 
window.onorientationchange = function() { 
    donnothing(); 
}; 
} 

如果你想出如何讓雙擊讓我們知道!

+0

return !! patte ... since!是否定,目的是什麼!那原來的陳述結果呢? – 2010-06-13 20:13:56

0

推薦的,和直接的方式做到這一點如下:

  1. 所有的子視圖添加到主視圖的筆尖文件或視圖控制器的viewDidLoad方法。
  2. 覆蓋視圖控制器視圖的layoutSubviews方法。在此方法中,檢查視圖的方向是縱向還是橫向,並根據所需的尺寸和位置設置每個子視圖的frame屬性。
  3. 在視圖控制器的-willRotateToInterfaceOrientation:duration:方法中調用[self layoutSubviews]方法。注意 - 當視圖旋轉時,可能會自動調用layoutSubviews,我不記得了。如果沒有,請自己調用。
0

轉到GitHub並查看NextMunich的NMView類(以及NMViewController)。非常非常強大並且非常易於實施。基本上,它是爲需要更復雜的視圖層次結構的人而構建的,但不想編寫大量額外的代碼來處理方向。它一旦你把它放下,它就會爲你做。

令人驚歎的真棒。在我選擇了他們的大腦之後,我偷看了他們的觀點動畫的一些想法。他們是超級友善的人。