2008-12-10 28 views
12

到目前爲止,我已經看過每一個問題,但似乎沒有人真正回答這個問題。如何在橫向上顯示一個UIView?

我創建了一個UITabBarController並添加了幾個視圖控制器。大多數的觀點都是以肖像的形式來觀看的,但是應該從風景中觀看。我不想使用加速計或檢測用戶何時旋轉設備,我只想在橫向模式下顯示視圖,當他們從底部的選項卡中選擇該視圖時。

我希望發生常規動畫,如選項卡放棄,視圖旋轉等,當他們選擇該項目時,相反會發生在他們選擇不同的視圖時。

是否沒有內置的屬性或方法來告訴系統顯示視圖的方向是什麼?

覆蓋shouldautorotate ...方法絕對沒有什麼,據我所知。

我不會欣賞的類型回答的是「RTFM」,因爲我已經有了,而誰是爲iPhone開發人至今知道有到F-ING R.

回答

9

post很少作爲M在一個可能有幫助的論壇上。簡短的回答是,你必須手動旋轉視圖或控制器一旦認爲已經繪就,在viewWillAppear中:方法

CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
landscapeTransform = CGAffineTransformTranslate (landscapeTransform, +80.0, +100.0); 

[[appDelegate navController].view setTransform:landscapeTransform]; 
+0

這並沒有考慮到任何動畫(標籤,狀態欄等) – 2008-12-10 17:56:06

9

下面是我在做什麼這樣做:

首先,把這個定義在你的文件的頂部,就在你#imports:

#define degreesToRadian(x) (M_PI * (x)/180.0) 

然後,在viewWillAppear中:方法

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];  
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) { 
    self.view.transform = CGAffineTransformIdentity; 
    self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
    self.view.bounds = CGRectMake(0.0, 0.0, 480, 320); 
} 

如果您希望進行動畫,那麼你可以用整個事情在動畫塊,像這樣:

[UIView beginAnimations:@"View Flip" context:nil]; 
[UIView setAnimationDuration:1.25]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];  
if (self.interfaceOrientation == UIInterfaceOrientationPortrait) { 
    self.view.transform = CGAffineTransformIdentity; 
    self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
    self.view.bounds = CGRectMake(0.0, 0.0, 480, 320); 
} 
[UIView commitAnimations]; 
0

覆蓋的定位方法在控制器類,它迫使風景是這樣的:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Overriden to allow any orientation. 
    return UIInterfaceOrientationIsLandscape(interfaceOrientation); 
} 

簡單而高效!

0

shouldAutorotateToInterfaceOrientation僅在tabbarcontroller中的所有視圖或導航控制器中的所有視圖控制器都符合旋轉時才起作用。

相關問題