2010-07-21 66 views
0

當我從nib動態加載子視圖並將其添加到當前主視圖viewDidLoad期間出現問題。SubView不想適合指定的框架

UIView *someView = // load from nib 
someView.frame 
    = CGRectMake(.0, 
       .0, 
       kFormSheetWidth /* = 540.0 */, 
       kFormSheetHeight) /* = 576.0 */; 
[self.view addSubview:someView]; 

這一切都發生的港前賽績窗口,在這裏UINavigationController實例被傳遞到presentModalViewController內。 但是,someView總是將自身調整爲220.0更大和116.0更高,因此不適合窗口。

someView筆尖貌似

的UITableView
XX的UIView
XXXX UITextInput
XX的UIButton

所有這些觀點都有autoresizeSubviews == YES, clipSubviews == YES

這是非常令人驚訝的行爲。有趣的是,當我在viewWillAppear:中設置someView的框架時,一切看起來都很好。我應該尋找什麼(哪裏)來解決這個問題?

回答

0

你這樣做是風景模式嗎? (ipad我假設是因爲尺寸的原因?)

這是一個黑暗中的刺,但它是一個很多人的問題。 (如果沒有它,我appologize)

的UINavigationController的rootview不處理喜歡你的代碼

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

方法做,所以你需要繼承UINavigationController的並執行它像你的視圖控制器所以也沒有總是以縱向添加視圖。

+0

你不應該繼承UINavigationController。它在[UINavigationController文檔](http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html) – 2011-02-24 21:52:06

+0

的「概述」部分的第一段中說明認爲子類化沒有任何問題,但你說得對,這是正確的。這裏是另一個類似的問題從SO:http://stackoverflow.com/questions/2769844/uinavigationcontroller-shouldautorotate-no-subclassing – 2011-02-24 21:58:43

0

某些視圖在您在viewDidLoad上創建其框架後調整其自身大小。

你應該做的是將autoresizeSubviews設置爲NO或者只是在viewWillApear中設置它的框架。