2012-07-12 105 views
0

我有這樣的代碼UIViewController子類中:觀點是不正確的旋轉

- (id)init { 
    self = [super init]; 

    if (self) {    
     self.view.frame = [PDToolbox screenFrame]; 
     self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

     self.view.backgroundColor = [UIColor redColor]; 
    } 

    return self; 
} 

我在的任何旋轉方法上的唯一事情是這樣的:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return YES; 
} 

但是屏幕後被旋轉到風景,在視圖上做一個NSLog顯示此:

<UIView: 0x10061640; frame = (0 0; 320 480); transform = [0, -1, 1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x10061670>> 

我不明白爲什麼它正在做這個轉變的事情,而不是像正常一樣旋轉?這意味着我將任何視圖放置在旋轉後的頂部,並將視圖的大小設置爲320x480的位置。

編輯:

人們不理解。所以我把一個視圖在它上面,同樣大小的的UIView,使用:

UIView *anotherView = [UIView alloc] initWithFrame:controller.view.bounds]; 
[controller.view addSubview:anotherView]; 

如果我在肖像添加anotherView,anotherView出現在肖像,與框架小320x480。

如果我在景觀中添加另一個視圖,另一個視圖出現在橫向上,但仍與幀320x480,因爲這是controller.view的框架仍然是什麼,因爲某些未知的原因。

+0

你可以只發布你的UIViewCOntroller的整個代碼 – 2012-07-12 16:30:53

+0

@ R.A當然。剛做完了。 – Andrew 2012-07-12 16:36:13

+0

其實我不明白你的問題..你是什麼意思?「我把它放在它的頂部,並將其設置爲視圖的大小最終在320x480的位置」 – 2012-07-12 16:40:56

回答

0

您的視圖/控制器層次結構是什麼樣的?在我看來,有些東西是在視圖上設置90°旋轉變換,而不是改變視圖的框架。如果你自己沒有這樣做,那很可能是父視圖或視圖控制器。

+0

它是UIViewController的直接子類。 – Andrew 2012-07-12 16:48:46

+0

我不是指你的UIViewController類的類層次結構,我的意思是你的應用程序的視圖層次結構。控制器的視圖嵌入在另一個視圖中,還是直接放置在應用程序的UIWindow中? – Tony 2012-07-12 16:53:01

+0

這是UIViewController附帶的普通視圖。這並沒有被修改。 – Andrew 2012-07-12 17:35:43

0

框架和邊界是非常不同的東西。你應該閱讀蘋果指南View Geometry - 它包含了很多對我來說無價的信息。

因爲有人正在設置您的transform(它會影響frame,但不會影響bounds),因此您的界限始終爲320x480。

確保您的視圖控制器視圖的超級視圖autoresizesSubviews設置爲YES並且添加的任何子視圖都有相應的autoresizingMask s。