我一直在致力於更新一些應用程序以支持iPhone 5.他們已經有了一些佈局問題,可以通過UIWindow始終具有iPhone 5的框架來解釋,無論它運行在哪個設備上。例如,對於通用應用程序,即使在iPad上,UIWindow的框架也會設置爲(0,0,320,568)。我想知道是什麼導致了這一點,如果這真的是我應該關心的。什麼決定了window.frame?
回答
我從來沒有這個檢查自己的通用應用程序,但是,應確保:
窗口已經視圖層次結構的一部分。新創建的窗口不會幫助您確定大小(如果您在-applicationDidFinishLaunching的最開始部分記錄了「
frame
」)。frame
只是一個訪問器,它合併了bounds
和center
屬性。如果將變換應用於視圖(窗口),它無法正常工作。但是,使用窗口時,通常會應用變換。
iOS的繪製代碼窗口看起來類似於以下內容:
CGContextSaveGState(context);
CGContextTranslateCTM(context, [window center].x, [window center].y);
CGContextConcatCTM(context, [window transform]);
CGContextTranslateCTM(context,
-[window bounds].size.width * [[window layer] anchorPoint].x,
-[window bounds].size.height * [[window layer] anchorPoint].y);
[[window layer] renderInContext:context];
CGContextRestoreGState(context);
你可以看到,最終frame
大小從bounds
和transform
確定。如果您進行了一些實驗,則可以看到,例如,即使設備方向發生更改,鍵盤窗口也不會更改邊界。縱向和橫向之間的尺寸變化由transform
決定。
一般而言,window.rootViewController.bounds
是要走的路。
部分hte視圖hierearchy做喲umean調用-makeKeyandVisible?我嘗試過之後再進行檢查,結果是一樣的。看起來有一個MainWindow.xib是我的問題的根源,因爲它保持在一個大小。更改模擬指標也會更改其大小。我讀過這是一個古老的做法,有這些xib文件,所以我會嘗試以編程方式製作窗口。感謝有關圖紙的技術信息。 –
@RickardWesterlund我對一件事感興趣 - 你能否確認窗口大小始終保持不變?例如,當在視圖控制器上調用viewDidLayout時,窗口的大小是否仍然相同?無論如何,幾乎沒有任何情況,窗口大小應該讓你感興趣。 – Sulthan
是的,窗口大小似乎保持不變。窗口大小似乎對觸摸輸入而言很重要,窗外的任何東西都不會接收到任何輸入。此外,旋轉時,我可以看到窗口,因爲它框架兩側的四個黑框將勾勒出它。看來根視圖控制器的視圖不是由窗口大小設置的,但這是一個不同的問題。現在,當我編程UIWindow時,代碼就會起作用,但它不是很漂亮。 –
- 1. 什麼決定了CALayer.position的初始值?
- 2. 什麼決定了內存模型?
- 3. 什麼決定了gitosis的用戶名?
- 4. 什麼決定了Devel的LEN值:: Peek
- 5. 什麼決定了FileMaker自定義菜單何時被禁用?
- 6. include_once或require_once解決了什麼問題?
- 7. Peaberry爲Guice解決了什麼問題?
- 8. 爲什麼解決不了的類型
- 9. 爲什麼ob_start()解決了header()錯誤?
- 10. LDAP解決了什麼問題?
- 11. 什麼決定了iPhone(移動探險)會用css:hover僞類做什麼?
- 12. 什麼因素決定DXGI_FORMAT?
- 13. 什麼決定事件
- 14. 什麼決定了文件#路徑的編碼?
- 15. ASP classic:什麼決定了ADODB的字符編碼?
- 16. 什麼決定了一個svn副本的速度
- 17. 什麼決定了機器學習模型的能力?
- 18. 什麼決定了算法RSA中消息的大小?
- 19. 是什麼決定了SQL Server Management Studio中可以並行
- 20. 什麼決定了Node.js應用程序是否繼續運行?
- 21. 爲什麼設計決定採用了不同的括號?
- 22. 什麼決定了Xamarin.Forms標籤頁中標籤欄的顏色?
- 23. 什麼決定了TaskFactory派生作業的線程數量?
- 24. 什麼決定了單個分區的最大inode?
- 25. 什麼決定了我的應用的顯示名稱?
- 26. 什麼決定了Xcode項目的developmentRegion設置?
- 27. 什麼決定了由深度導致的縮放量?
- 28. 什麼決定了QFileDialog中文件的排序?
- 29. 什麼決定了多個UITableView的加載順序?
- 30. 什麼決定了調試器的運行時性能
你如何確定窗口的大小? – Eric
您是否檢查過目標設備?併爲目標設備添加了閃屏圖像? – Divyu
我爲每個適用設備提供了啓動畫面和圖標,並且我已經對目標設備進行了雙重檢查,看起來應該如此。我還在通用應用程序的模擬器上運行了一個測試,其中我在-applicationDidFinishLaunching的最開始處放置了一個斷點:並將「po窗口」輸入到iPhone 4,iPhone 5和iPad Retina的調試器中,並輸出三個輸出是一樣的,說「frame =(0 0; 320 568);」 –