2011-06-28 71 views
0

的方向我有兩個的viewController,A和B.問題有關的UIView

我想,這個應用就是風景,所以在A和BI覆蓋

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 

有兩種方式INIT B,和添加B的視圖的

1.

一個子視圖在甲的viewDidLoad,我通過init方法得到B的對象。

B *bController = [[B alloc] init]; 
b.view.backgroundColor = [UIColor redColor]; 
[self.view addSubview:b.view]; 

2.

在甲的viewDidLoad,我打通initWithNib方法B的對象。 在B的Nib文件中。我將視圖的方向更改爲LandScape,並將視圖的大小更改爲(480,300)

當我在B的viewDidLoad方法中輸出B的視圖的框架時,我得到了不同的結果。

方法1」的輸出是(320,460),儘管該設備被旋轉到橫向並且視圖充滿了屏幕。

方法2」的輸出是(480,300)。這僅僅是我的期望。

爲什麼method1的輸出不是(480,300)而是(320,460)?

謝謝!

+0

爲什麼不直接將項目的支持方向設置爲橫向?在Xcode 4中點擊項目文件,轉到摘要,然後查看支持的設備方向。點擊肖像模式以禁用它們。 – hundreth

+0

您應該只有一個視圖控制器負責整個視圖層次結構。換句話說,您不應該將B的視圖添加爲A視圖的子視圖。像UINavigationController這樣的容器控制器是一個明顯的例外,但那些控制器沒有自己的視圖。 – Caleb

回答

0

更改subView的autoSizing屬性,就是這樣。