2011-02-08 38 views
19

我有一個root UIViewController,我添加了其他UIViewController作爲子視圖。目前每個子視圖都太低了(覆蓋了我的自定義構建標籤欄)。當我嘗試如下類似的東西時,它不起作用:iPhone:如何設置UIViewController框架?

// Test setting frame size to see if it works 
self.view.frame = CGRectMake(0, 0, 200, 200); 

這並沒有改變幀的大小。

所以,我的問題是,當UIViewController被添加爲子視圖後,如何設置我的框架?

+0

如果可以的話,而不是使用Interface Builder。 – 2011-02-08 04:40:11

+0

您是否在添加子視圖控制器後嘗試在其viewDidAppear方法中設置子視圖控制器的框架? – alones 2011-02-08 04:42:11

+0

我正在嘗試viewDidLoad方法。 – 2011-02-08 04:58:12

回答

21

@Nic我認爲,當您添加的另一種觀點,這時候你應該定義其他視圖幀大小是這樣的:

Someviewcontroller *c = initWithNibName 
c.view.frame = CGRectMake(0, 0, 200, 200); 
[self addSubView:c]; 

我不知道這是否會工作,但它是這樣的。

6

首先,確保您的框架實際上沒有改變大小。可能它/正在改變大小,但你期望它能夠剪切它的內容;這種行爲不是在默認情況下一個UIView啓用,將需要通過設置:

[[self view] setClipsToBounds:YES]; 

仔細檢查,並確保您的幀/不設置新的框架之後,改變大小,嘗試登錄此:

NSLog(@"New frame is: %@", NSStringFromCGRect([[self view] frame])); 

或者簡單地在更改後設置斷點並檢查調試器中的值。

4

然後總是有...

// Screen, less StatusBar 
CGRect l_RectFrame = [UIScreen mainScreen].applicationFrame; 

或者......

// Entire Screen 
CGRect l_RectFrame = [UIScreen mainScreen].bounds; 


MyView *l_aView = [[MyView alloc] initWithFrame:l_RectFrame]; 
...