2011-07-19 46 views
0

我有一個包含視圖控制器的UIScrollView,其中包含幾個控制器 - 文本字段,按鈕,圖像等。 .. 當它顯示在縱向模式下時,我希望它的行爲好像沒有滾動視圖(當然,它仍然存在,但禁用了滾動和反彈等,內容大小是應用程序框架的大小)以及自定義視圖只是正常顯示,但切換到橫向時,我想使滾動視圖可用,以避免嚴格的用戶界面。在xib文件視圖之外設置視圖以適合滾動視圖+不同xib的方向 - iOs

我想使用人像/風景模式的具體廈門國際銀行文件和不到位的,因爲定位的原因不同使用代碼的對象, 我遇到的3個問題這樣做:

1)我不能找到一種方法,加載並在旋轉時向控制器應用不同的xib(我希望它也是一個平滑的過渡,但現在不那麼重要)

2)我找不到一種方法來設置超出範圍應用程序框架在xib文件中(我沒有直接在滾動視圖中的按鈕等,但在滾動視圖內的自定義視圖內),所以我不能在隱形部分放置任何東西滾動視圖的部分(需要滾動以便看到的部分)

3)我無法找到一種方法來指定滾動視圖的內容大小通過xib文件,這是需要爲了接口儘可能靈活地進行本地化。

您對如何實施/解決這些需求有什麼想法嗎?

在此先感謝!

回答

0

我會建議做你說的第一句話,你不會做:

我想使用人像/風景模式的具體廈門國際銀行文件,而不是 處的對象使用不同的代碼

我花大量的時間量好嘗試使用不同的取向不同的廈門國際銀行,但這裏的交易:

1)如果在人像有一個的UITextField,當你旋轉爲橫向,你哈例如,要確保縱向模式中的文本在橫向上相同。你必須爲每個對象都這樣做。 2)即使你不指望1)我永遠無法成功地實現兩個xibs解決方案。我不是說你不能這樣做,我只是從我的經驗中說,我無法做到這一點。

所以,如果你至少覺得做1級廈門國際銀行的解決方案,我可以解釋一下:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)orientation{ 

} 

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
    NSLog(@"My view will rotate"); 
    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) { 
     [self viewsPositionPortrait]; 
    } else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)){ 
     [self viewsPositionLandScape]; 
    } 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    NSLog(@"Register should rotate"); 
    return YES; 
} 

-(void)viewsPositionPortrait{ 

//創建你的「oneOfmyViews」爲縱向旋轉 oneOfMyviews.frame = CGRectMake框架(...,...,...,...); }

-(void)buttonsPositionLandScape{ 

//創建你的 「oneOfmyViews景觀」 旋轉 框架oneOfMyviews.frame = CGRectMake(...,...,...,...);

} 

然後你可以在viewsPosition方法中定義你的視圖的框架。你贏了什麼?

1)清潔代碼。

2)美麗的過渡。

3)輕鬆指定滾動視圖的內容大小。

對於你的UIViews => CustomViewController => UIScrollView的旋轉問題。 你可以這樣做:

1)在你的CustomViewController裏面你的自定義視圖(上面的方法)爲你的UIViews做同樣的事情。

2)在有你的CustomViewControllers你可以做以下的觀點:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
    //(everything that i posted above) 
    [myCustomViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 
} 

這樣,你會讓你的customViewController旋轉內UIViews。最後一個提示:禁用autoresize-subviews並從你的UIViews中取出每一個自動大小(因爲你將單獨定義它們的框架)。

+0

雖然這非常有幫助,但我最終在當前應用程序中使用了2個xib文件。我的解決方案問題在於它很難本地化,而本地化xib更容易。我擔心它會造成旋轉不順暢,但看起來完全一樣。 – Niv