2011-03-30 96 views
0

我有一個項目,我在XCode 4中創建,在iPad和iPhone上運行。當顯示旋轉時,我想知道最好的方法是讓控件旋轉。我的一些圖像和控件需要改變,以支持不同的方向。iPad和iPhone的方向問題

理想情況下,我想有一個單獨的筆尖文件,但我不知道如何切換視圖。我知道我可以通過UIInterfaceOrientation等獲得方向,但因爲我是iDevelopment的新手,所以我不確定最好的方法來做到這一點。

任何意見和/或例子將有所幫助!

感謝, 你可能已經知道託尼

回答

2

件事:做盡可能多的,你可以使用自動調整大小面具。在理想的世界裏,你會盡全力與他們做一切。儘管不難想到控制器的例子,你想要更多的控制權,而且你明顯擁有控制權。在代碼方面,顯而易見的是執行shouldAutorotateToInterfaceOrientation並確保返回支持方向的「是」。

除此之外,你想要實現的主要是- willAnimateRotationToInterfaceOrientation:duration:。這將在視圖旋轉時在一個動畫塊中調用,並且在您以前不在之前的方向進入視圖控制器時將用於立即生效。重新定位和/或改變您的視圖,並根據需要獲得適當的動畫過渡。出於體面動畫的目的,重新配置一個視圖而不是從一個視圖切換到另一個視圖要好得多。

從一個項目,我已削減了(並重新格式化爲薄文本區域位置上的StackOverflow)的示例代碼:

- (void)willAnimateRotationToInterfaceOrientation: 
       (UIInterfaceOrientation)toInterfaceOrientation 
             duration:(NSTimeInterval)duration 
{ 
    if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) 
    { 
     nameField.frame = CGRectMake(75, 107, 225, 31); 
     nameLabel.frame = CGRectMake(20, 107, 47, 32); 

     URLField.frame = CGRectMake(75, 145, 225, 31); 
     URLLabel.frame = CGRectMake(20, 145, 47, 32); 
    } 
    else 
    { 
     nameField.frame = CGRectMake(75, 107, 155, 31); 
     nameLabel.frame = CGRectMake(20, 107, 47, 32); 

     URLLabel.frame = CGRectMake(250, 107, 35, 32); 
     URLField.frame = CGRectMake(293, 107, 167, 31); 
    } 
} 

類出口連接到一對夫婦的標籤和文本字段,允許用戶輸入一個名字和一個URL。該代碼的作用是視圖根據橫向或縱向從一列切換到兩列。

這是一個必須硬編碼的綁定,但我還沒有找到更好的方法。如果您不擔心動畫混洗,更直觀的方法可能是在NIB中分別設置兩個視圖,並在出現瞬間時添加/刪除相關視圖。

+0

嗯,這聽起來不錯...我可以definetly使用你上面描述的功能和重新定位我的控制,但我確實有一個圖像的背景;問題 - 我該怎麼做?我在兩個方向都有一個圖像,但我該如何去切換它們?而且,這是否搞亂了動畫呢?謝謝你的幫助!!! – LilMoke 2011-03-30 19:27:22

+1

如果您設置的屬性不是可設置的(根據CoreGraphics的含義),那麼它將立即生效,而不考慮任何其他因素。一個想法是讓這兩個圖像成爲你視圖的一部分,正確定位它們各自的方向,並通過設置其alpha屬性爲0或1來啓用/禁用前者,因爲這是可動畫的。這應該會給你一個褪色。 – Tommy 2011-03-30 19:31:16

+0

非常酷!我會試一試!謝謝!! – LilMoke 2011-03-30 20:48:04