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

时间:2012-09-13 12:39:59

标签: ios ios5 ios6

如何在界面制作工具中使用4英寸iphone5和较旧的iPhone 4 / 4s制作uitableview?

Xcode 4.5中有三个选项:

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

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

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

如何使用Interface Builder进行操作?

修改

我的问题是iphone 5视网膜4英寸屏幕。 当检查具有状态栏和导航栏的视图的大小时,这里是self.view.frame.size.height / width的值,如果我选择freeform / none / retina 3.5

设置自动调整大小选项,以便视图在所有方向上展开,即启用所有struts和spring。

修改 对于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模拟器中点击

5 个答案:

答案 0 :(得分:18)

请注意如果您在应用程序中显示操作表,则将size属性设置为“Retina 4 Full Screen”。此解决方案实际上将主窗口的尺寸设置为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);

}

答案 1 :(得分:11)

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

enter image description here

答案 2 :(得分: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 ^

答案 3 :(得分:3)

在界面生成器中选择“自由形式”,“Retina 3.5”或“Retina 4”等设置位于右侧面板的“模拟指标”部分(注意重点已添加) )

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

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

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

总之,你唯一需要做的是:

  • 首选为视图选择“Retina 3.5”模拟指标,以便在界面生成器中查看显示此视图时可能具有的最小尺寸(帮助您避免在仅部分屏幕中放置视图和控件在4英寸的屏幕上可见,但不是在3.5英寸的屏幕上,并且通过牢记最小的公共区域来描绘您的视野)
  • 正确配置AutoResizing Masks(或者如果您打算仅为iOS6而不是iOS4或iOS5发布应用程序,请使用AutoLayout和约束),以便在屏幕较高时(Retina 4“)可以正确重新排列您的视图。< / LI>

答案 4 :(得分:0)

如果您的界面使用的是Storyboard:

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

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

删除 type="retina4"

然后它将是默认大小3.5“