2012-12-05 61 views
2

我創建了一個單視圖測試應用程序,並將UIButtonUIView添加到主故事板中的UIViewController。我調整了按鈕大小相同的視圖。模擬器中的UIView邊界/繪圖不正確

enter image description here

在我的VC的-viewDidAppear:動畫方法我傾倒框架和按鈕的邊界和看法:

- (void)viewDidAppear:(BOOL)animated 
{ 
    NSLog(@"button bounds: %@", NSStringFromCGRect(self.theButton.bounds)); 
    NSLog(@"button frame: %@", NSStringFromCGRect(self.theButton.frame)); 

    NSLog(@"view bounds: %@", NSStringFromCGRect(self.theView.bounds)); 
    NSLog(@"view frame: %@", NSStringFromCGRect(self.theView.frame)); 
} 

在這裏,在模擬器上運行時的輸出:

button bounds: {{0, 0},  {100, 100}} 
button frame: {{110, 72}, {100, 100}} 
view bounds: {{0, 0},  {100, 12}} 
view frame: {{110, 179}, {100, 12}} 

當在設備上運行時:

button bounds: {{0, 0},  {100, 100}} 
button frame: {{110, 72}, {100, 100}} 
view bounds: {{0, 0},  {100, 100}} 
view frame: {{110, 179}, {100, 100}} 

我不明白爲什麼視圖在模擬器中運行時報告12的高度。視圖在模擬器中繪製不正確,但在設備上運行時按預期繪製。請注意,UIViewController的最上面的UIVIew具有「Autoresize Subviews」未選中狀態(儘管這兩種方式都沒有區別)。

(Xcode的4.5.2。的iOS 6.0)

謝謝, CS

enter image description here

+0

從視圖的底部延伸那行,也許這就是使它自動調整視圖 – jjv360

+0

jjv360:?那行只是IB的自動對中指南,它可以幫助你將視圖集中在它的父視圖中),它與繪圖沒有關係:) – RobertJoseph

+0

在視圖中添加內容並查看它是否自動調整大小 –

回答

1

單擊顯示佈局 「應用視網膜4外形」 按鈕。您爲Retina 4設置了這個設置,因此在模擬器中運行時屏幕的大小調整爲3.5。您可以通過運行iPhone5模擬器(Retina 4英寸)來驗證這一點。切換的形式因素3.5" 後,你會發現高度變化到12

enter image description here

+0

謝謝MarkM。這確實是我的問題。我想知道我應該如何在IB工作。例如,假設我希望視圖爲100,100,而不管設備/模擬器大小如何?爲什麼按鈕沒有調整視圖的方式? (再次,提前致謝) – RobertJoseph

+0

我傾向於總是使用3.5「形狀因子,然後來回切換以檢查兼容性。這減輕了每次啓動模擬器以檢查佈局的可能性。AutoLayout爲此添加了另一層,但是概念是一樣的,除非你不打算支持任何3.5英寸的設備,否則堅持使用3.5英寸的佈局,Ray在他的網站上有一篇關於這方面的很好的文章,說實話,我還是不喜歡使用AutoLayout功能。 HTTP://www.raywenderlich。com/20897/begin-auto-layout-part-2-of-2 –

+0

再次感謝Mark - 我現在理解了這個問題,並將繼續使用您的建議。我也會檢查Ray的教程(我喜歡那個網站)。除非你認爲我是個白癡,否則請提出我的問題。 ;-) – RobertJoseph