2012-10-19 50 views
0

我使用的Xcode 4.5(櫃面有什麼差別)用故事板一起,我試圖做一些事情似乎沒有任何的運氣非常簡單。在我的故事板視圖我已經把一個UIView組件,你可以在圖片中看到這裏http://www.shopow.co.uk/assets/storyboard-view.png,其中綠色部分是具有100無法調整一個UIView

的高度在viewDidLoad方法我已經添加以下代碼

了UIView
NSLog(@"View Height: %f", self.testView.bounds.size.height); 

CGRect viewFrame = self.testView.frame; 
CGSize newSize = CGSizeMake(viewFrame.size.width, 300); 
viewFrame.size = newSize; 
self.testView.frame = viewFrame; 

NSLog(@"View Height: %f", self.testView.bounds.size.height); 

從我讀過關於變更東西,我會承擔起綠色部分調整爲300高但這種情況不會發生,儘管在日誌窗口的輸出顯示如下

2012-10-19 13:05:28.015 TableTest[54318:c07] View Height: 460.000000 
2012-10-19 13:05:28.016 TableTest[54318:c07] View Height: 300.000000 

公告最初的高度bei ng 460而不是100,這可能意味着什麼!

的iOS模擬器顯示了這個http://www.shopow.co.uk/assets/simulator-view.png

我必須忽視的東西明顯,因爲據我可以告訴這是不按預期工作。任何指導將不勝感激。

+1

是testView鏈接到grean視圖的權利?看起來好像你把它鏈接到控制器的視圖 – xfx

+0

嗨,添加UIView我只是把它拖入,然後作爲一個屬性在.h文件中鏈接,像這樣'@property(strong,nonatomic)IBOutlet UIView * testView;然後將其合成到.m文件中。我應該以不同的方式去做嗎? – olliefinn

回答

0

我不確定它是否會解決您的問題,但您應該確實在viewWillAppear而不是viewDidLoad中調整了您的視圖。

viewDidLoad的字面意思是說話算數「的觀點已加載」。然而,在這一點上,你的筆尖可能沒有像你期望的那樣設置視圖。

作爲測試,嘗試登錄在以下兩者viewDidLoadviewWillAppear

的NSLog(@ 「幀:%@」,NSStringFromCGRect(self.view.frame));

您應該看到,在這兩種方法中,您得到不同的結果。由於視圖已經設置好並且準備好呈現,所以viewWillAppear方法更可能是正確的。

我個人不使用Interface Builder所有的東西,因爲它會導致更多的麻煩,比我能對付,但也許你自動調整大小口罩或彈性約束設置這是影響你的觀點的尺寸是多少?

+0

嗨,正如我在其他評論中提到的,我嘗試在'viewWillAppear'和'viewDidAppear'方法中實現它,但結果相同。我會研究約束條件,看看它們是否會引發任何問題,儘管我根本沒有對它們進行調整,並且我會(可能錯誤地)認爲使用默認設置可以調整大小。 – olliefinn

+0

我認爲,默認情況下,自動調整大小設置爲約束視圖的所有維度。檢查IB並刪除所有約束條件。除此之外,別的東西可能會超然。 – CaptainRedmuff

+0

即使刪除所有的約束,子視圖也不會調整大小。我用一個單獨的故事板場景創建了一個新項目,並用相同的代碼嘗試過,以排除其他任何情況,並且仍會發生同樣的情況。在自動佈局開啓和關閉時也會發生這種情況,在這兩種情況下都會刪除或刪除任何約束。我很好,真的堅持這一點,我也無法在任何地方找到任何樣本,我可以看到它的工作,所以我可以比較我在做什麼。 – olliefinn

0

像@CaptainRedmuff說,你錯了方法調用它。加載視圖後調用viewDidLoad,這表示該幀已被設置。您正在尋找的方法是loadView,因爲viewWillAppear:animatedviewDidAppear:animated正在調用viewDidLoad之後。

+0

嗨,我轉了一圈,所以代碼現在在'loadView'方法中實現,但我仍然得到相同的結果。我也在'viewWillAppear'和'viewDidAppear'方法中嘗試了它,結果相同 – olliefinn

0

OP不清楚他是如何解決它的。如果其他人有這個問題。

如果您的視圖顯示與您在故事板中看到的佈局相同的佈局,儘管以某種方式以編程方式調整/更改其屬性,這是因爲自動佈局會造成嚴重破壞。

只需選擇您要以編程方式更改並轉到文件檢查器在屬性面板中的視圖。取消選中使用自動佈局旁邊的複選框。再次運行,你會看到你的問題神奇消失。