Ios 如何使interface builder中的uitableview与4英寸iPhone兼容

Ios 如何使interface builder中的uitableview与4英寸iPhone兼容,ios,ios5,ios6,Ios,Ios5,Ios6,如何使interface builder中的uitableview与4英寸iPhone 5和旧版iPhone 4/4s兼容 Xcode 4.5中有三个选项: 自由形式 视网膜3.5全屏 视网膜4全屏 如果我选择视网膜4,那么在3.5英寸手机中,它会穿过/溢出屏幕边界 使用代码,我可以相应地设置框架,但是使用interface builder有什么用呢 人们应该如何使用Interface Builder实现这一点 编辑 我的问题是关于iPhone5视网膜4英寸屏幕。 当检查具有状态栏和导航栏的

如何使interface builder中的uitableview与4英寸iPhone 5和旧版iPhone 4/4s兼容

Xcode 4.5中有三个选项:

  • 自由形式
  • 视网膜3.5全屏
  • 视网膜4全屏
如果我选择视网膜4,那么在3.5英寸手机中,它会穿过/溢出屏幕边界

使用代码,我可以相应地设置框架,但是使用interface builder有什么用呢

人们应该如何使用Interface Builder实现这一点

编辑

我的问题是关于iPhone5视网膜4英寸屏幕。 当检查具有状态栏和导航栏的视图大小时,如果我选择freeform/none/retina 3.5,这里是self.view.frame.size.height/width,frame 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文件。在这之后,即使在iPhone4上,它似乎也能正常工作。现在,在iOS 6模拟器中,480px以下的所有行都可以单击。据我所知,您想创建一个既适用于iPhone 4又适用于iPhone 5的表视图。首先,我没有尝试过Xcode 4.5,但是代码

 CGRect fullScreenRect = [[UIScreen mainScreen] bounds];
 theTableView.frame = CGRectmake = (0,0,fullScreenRect.width,fullScreenRect.height);
fullScreenRect
将返回当前设备的绑定,无论是3.5英寸还是5英寸。u可以动态设置高度和宽度

让我知道它是否有效

干杯


W

在界面生成器中选择“自由形式”、“视网膜3.5”或“视网膜4”等设置位于右侧面板的“模拟的度量”部分(请注意添加的重点)

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

例如,如果您知道将在顶部有一个状态栏和导航栏,在底部有一个选项卡栏,那么您在屏幕上组织剩余视图的空间将更少,因此在“模拟指标”中选择这些面板的部分将帮助您查看视图中的空间,并避免将元素放置在y=460处,因为这些导航栏和选项卡栏在运行时会脱离屏幕

但最后,UIViewController将调整其视图的大小,以便占用最大的可用空间,并根据AutoresizingMask属性(您可以在IB中的“大小检查器”窗格中配置的struts&Spring)移动子视图

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

  • 选择“视网膜3.5”模拟度量,以便在界面生成器中查看显示此视图时可能具有的最小尺寸(帮助您避免将视图和控件放置在屏幕的某个部分,该部分仅在4英寸屏幕中可见,而在3.5英寸屏幕上不可见)屏幕和设计视图(记住最小的公共区域)
  • 正确配置自动调整大小的遮罩(如果您计划仅为iOS6而不是iOS4或iOS5发布应用程序,请使用自动布局和约束),以便在屏幕更高时正确重新排列视图(视网膜4”)

选择您的xib文件并更改
大小属性


小心将“大小”属性设置为“视网膜4全屏”“如果您在应用程序中提供操作表。这个解决方案实际上将主窗口的尺寸设置为iPhone5的尺寸。在我的例子中,当您尝试显示操作表时,在iPhone4中设置此受影响的显示,因为它将尝试从可视屏幕下方显示

适用于所有情况的正确解决方案是将大小设置为“无”,并在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);

}

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

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

走到底 发现

删除
type=“retina4”


那么它将是3.5中的默认大小“

您看过IB中的自动调整大小选项了吗?添加启动映像默认值-568h@2x.png一切都会好的。IB可以选择模拟4英寸-在右下角靠近缩放按钮的地方…我遇到了同样的问题,那就是底部的一行不可点击。最后,我把所有屏幕的大小都设置为retina4,我知道如何用代码来实现。我正在界面生成器中查看如何进行编辑检查我的编辑,即使在代码中设置后,480 px以下的部分也不可选择/可单击+1,我需要通过编程更改大小,正确的代码是:
CGRect fullScreenRect=[[UIScreen mainScreen]bounds];self.view.frame=CGRectMake(0,0,fullScreenRect.size.width,fullScreenRect.size.height)不正确,这里是self.view.frame.size.height/width,frame 320.000000 x 416.000000的值,如果我选择freeform/none/retina 3.5是,那么?如果视图控制器在3.5英寸屏幕(高度为480pt)上显示状态栏(20pt)和导航栏(44pt),则这就是视图的大小,对我来说似乎是合法的。我的问题是关于4英寸的iphone 5视网膜!!高度不是480px!!我在iOS 6模拟器上进行测试。是的,我在尝试新的iOS 6模拟器,认为问题“与4英寸的iphone 5兼容”是明确的。是的,我知道,这样做无助于解决问题