11

如何在界面生成器中制作与 4 英寸 iphone5 和旧 iPhone 4/4s 兼容的 uitableview?

Xcode 4.5 中有三个选项:

  • 自由形式
  • 视网膜3.5全面屏
  • 视网膜4全面屏

如果我选择 Retina 4,那么在 3.5 英寸手机中它会越过/溢出屏幕边框

使用代码,我可以相应地设置框架,但是使用界面生成器有什么用呢?

应该如何使用 Interface Builder 来做到这一点?

编辑

我的问题是针对 iphone 5 视网膜 4 英寸屏幕。在检查具有状态栏和导航栏的视图大小时,这里是 self.view.frame.size.height/width 的值,如果我选择 freeform/none/retina 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 像素以下的所有行都是不可选择的,因为“视图”仍然认为它们超出了范围。

我的解决方案

将所有屏幕的大小设置为 Retina 4,包括主窗口 xib 文件。在此之后,即使在 iphone 4 上它似乎也能正常工作。并且所有低于 480px 的行现在都可以在 iOS 6 模拟器中点击

4

5 回答 5

18

如果您在应用程序中显示操作表,请注意将 size 属性设置为“Retina 4 Full Screen” 此解决方案实际上将主窗口的尺寸设置为 iPhone 5 的尺寸。在我的情况下,当您尝试显示操作表时在 iPhone 4 中设置此受影响的显示,因为它会尝试从可视屏幕下方显示它.

适用于所有情况的正确解决方案是将大小设置为 none 并在应用程序委托 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);

}
于 2012-09-25T19:22:27.850 回答
11

选择您的 xib 文件并更改Size属性。

在此处输入图像描述

于 2012-09-14T08:06:07.447 回答
3

在 Interface Builder 中选择“freeform”、“Retina 3.5”或“Retina 4”等设置位于右侧面板的“模拟指标”部分(注意添加的重点)

这意味着它们仅用于向您展示视图在以这些尺寸显示时的外观。通常,您可以在设计时使用它来了解布局视图所需的空间。但是 UIViewController 的 UIView 在最后显示在屏幕上时总是会调整大小。

例如,如果您知道顶部有一个状态栏和一个 NavigationBar,底部有一个 TabBar,那么您在屏幕上组织剩余视图的空间就会减少,因此请在“模拟指标”部分中选择它们面板的 将帮助您查看视图中有哪些空间,并避免将元素放置在 y=460 处,由于这些 NavBar 和 TabBar,这些元素将在运行时离开屏幕。

但最后,UIViewController 将调整其视图的大小以占用最大的可用空间,并根据 AutoresizingMask 属性(您可以在 IB 的 Size Inspector 窗格中配置的支柱和弹簧)移动子视图。

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

  • 更喜欢为您的视图选择“Retina 3.5”模拟指标,以便在 Interface Builder 中查看显示此视图时可能具有的最小尺寸(帮助您避免将视图和控件放置在屏幕的一部分中,这些部分仅在 4 “屏幕但不在 3.5”屏幕上,并通过牢记最小的公共区域来设计您的视图)
  • 正确配置您的 AutoResizing Masks(或使用 AutoLayout 和约束,如果您计划仅发布适用于 iOS6 而不是 iOS4 或 iOS5 的应用程序),以便在屏幕较高(Retina 4")时正确重新排列您的视图。
于 2012-09-13T12:58:36.523 回答
3

据我了解,您想创建一个适用于 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

于 2012-09-13T12:47:09.760 回答
0

如果您的界面使用故事板:

使用“文本编辑器”打开 *.Storyboard

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

删除 type="retina4"

那么它将是 3.5 的默认尺寸”

于 2012-10-17T03:52:19.037 回答