2011-11-02 92 views
1

我有一個UIView的大小寬度= 320px高度= 40px,我想顯示在底部看起來像一個標籤欄。UIView大小/位置不能在iPad上工作如iPhone上

我使用下面的代碼來實現這一點,它可以在iPhone上正常工作。但是當我嘗試iPad模擬器時,視圖不會出現在屏幕上的任何位置。

buttonsView.frame=CGRectMake(
           0, 
           self.view.frame.size.height - buttonsView.frame.size.height, 
           self.view.frame.size.width, 
           buttonsView.frame.size.height); 

這將視圖延伸到屏幕的寬度,但保持原來的高度。

我該如何在iPad上正確顯示此節目?

[更新]

這發生在我的viewDidLoad

我有這樣的NSLog現在:

NSLog(@"buttonsView Width: \t%g\t%g\tHeight:\t%g\t%g",self.view.frame.size.width, buttonsView.frame.size.width, self.view.frame.size.height, buttonsView.frame.size.height); 

隨着輸出:
iPhone:

buttonsView寬度:320 320身高:460 40

的iPad:

buttonsView寬度:768 768高度:1004 40

我也像這樣創建另一個視圖頁面頂部的正常工作:

dataView.frame=CGRectMake(
          0, 
          0, 
          self.view.frame.size.width, 
          dataView.frame.size.height); 
+0

何時調用此代碼?在'init','viewDidLoad','viewWillAppear'等? – Kevin

回答

1

發生這種情況是因爲Auto Resizing被設置爲UIView的。

要修復,請將Auto Resizing設置爲將其綁定到左上角。這種方式每當你改變框架,它是相對於左上角的像素。

3

你有沒有看(使用斷點或NSLog)在您打入CGRectMake電話的價值,就像是一種「理智檢查」?


感謝您的信息。我的下一個想法是在viewDidLoadviewWillAppear之間,操作系統正在改變某些東西。也許嘗試將代碼移動到viewWillAppear,以保證您正在使用的幀將是將要顯示的幀。 This Stack Overflow answer更深入地解釋它。

+0

檢查更新 – LouwHopley

+0

斷點會做什麼? – LouwHopley

+0

所以你可以使用gdb打印出來的值,作爲NSLog的替代品 – Kevin