簡體   English   中英

如何在界面構建器中使用與4英寸iPhone兼容的uitableview

[英]How to make a uitableview in interface builder compatible with a 4 inch iPhone

如何在界面生成器中與4英寸iphone5和較舊的iPhone 4 / 4s兼容?

Xcode 4.5有三個選項:

  • 自由形式
  • Retina 3.5全屏
  • Retina 4全屏

如果我選擇了Retina 4,那么在3.5英寸手機中它會穿過/溢出屏幕邊框

使用代碼,我可以相應地設置框架,但是使用界面構建器有什么用?

應該如何使用Interface Builder進行操作?

編輯

我的問題是iphone 5視網膜4英寸屏幕。 當檢查具有狀態欄和導航欄的視圖的大小時,這里是self.view.frame.size.height / width的值,如果我選擇自由形式/無/視網膜3.5,則為320.000000 x 416.000000

設置自動調整大小選項,以便視圖在所有方向上擴展,即啟用所有支柱和彈簧。

編輯在iOS6模擬器中進行測試,如果我在代碼中設置以下內容

self.tableView.frame    = CGRectMake(0, 0, 320, 546);
self.tableView.bounds   = CGRectMake(0, 0, 320, 546);
self.view.frame         = CGRectMake(0, 0, 320, 546);
self.view.bounds        = CGRectMake(0, 0, 320, 546);
NSLog(@"%2f - %2f", self.view.bounds.size.width, self.view.bounds.size.height);
NSLog(@"%2f - %2f", self.tableView.bounds.size.width, self.tableView.bounds.size.height);

我得到以下輸出

 320.000000 - 546.000000
 320.000000 - 546.000000

並且從頂部開始的480 px以下的所有行都是不可選擇的,因為“視圖”仍然認為它們超出界限。

我的解決方案

為所有屏幕設置Retina 4的大小,甚至是主窗口xib文件。 在此之后,它甚至可以在iphone 4上正常工作。 現在,所有低於480px的行都可以在iOS 6模擬器中點擊

設置大小謹防屬性設置為“視網膜4全屏”如果你的應用程序,你現在actionsheets。 此解決方案實際上將主窗口的尺寸設置為iPhone 5的尺寸。在我的情況下,當您嘗試顯示操作表時,在iPhone 4中設置此受影響的顯示,因為它將嘗試從可視屏幕下方顯示它。

適用於所有情況的正確解決方案是將大小設置為none並在app delegate didfinishloading方法中檢測屏幕大小,並將主窗口設置為該大小或將rootviewcontroller的視圖設置為該大小。 操作表將正常工作。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window.frame = CGRectMake(0, 0, [[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height);

}

選擇您的xib文件並更改Size屬性。

在此輸入圖像描述

根據我的理解,你想創建一個適用於iPhone 4和5的表視圖。首先,我首先嘗試了Xcode 4.5,但是代碼

 CGRect fullScreenRect = [[UIScreen mainScreen] bounds];
 theTableView.frame = CGRectmake = (0,0,fullScreenRect.width,fullScreenRect.height);

fullScreenRect將返回當前設備的界限,無論是3.5還是5英寸。 你可以動態設置高度和寬度。

讓我知道它是否有效..

干杯

w ^

在Interface Builder中選擇“自由形式”,“Retina 3.5”或“Retina 4”等設置位於右側面板的“ 模擬指標”部分(注意添加的重點)

這意味着它們僅用於向您顯示在這些維度上顯示時視圖的外觀。 通常,您可以使用它來了解設計時用於布置視圖的空間。 但是UIViewController的UIView總是在最后顯示在屏幕上時調整大小。

例如,如果您知道頂部有一個狀態欄和一個NavigationBar,底部有一個TabBar,那么您在屏幕上組織剩余視圖的空間將會減少,因此請在“模擬指標”部分中選擇這些視圖。該面板將幫助您查看視圖中的哪個空間,並避免將元素放在y = 460處,因為這些NavBar和TabBar會在運行時偏離屏幕。

但最后,UIViewController將調整其視圖大小,以便占用最大可用空間,根據AutoresizingMask屬性移動子視圖(您可以在IB中的Size Inspector窗格中配置struts和spring)。

總之,您唯一需要做的就是:

  • 首選為視圖選擇“Retina 3.5”模擬度量標准,以便在界面生成器中查看顯示此視圖時可能具有的最小尺寸(幫助您避免在屏幕的一部分中放置視圖和控件,僅在4中可見“屏幕但不是在3.5英寸的屏幕上,並通過記住最小的公共區域來定義您的視圖)
  • 正確配置AutoResizing Masks(或者如果您打算僅為iOS6而不是iOS4或iOS5發布應用程序,請使用AutoLayout和約束),以便在屏幕較高時(Retina 4“)可以正確地重新排列您的視圖。

如果您的界面使用Storyboard:

用“文本編輯器”打開* .Storyboard

然后到最后找到<simulatedScreenMetrics key="destination" type="retina4"/>

刪除type="retina4"

然后它將是3.5“的默認大小

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM