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

Ana*_*and 11 ios ios5 ios6

如何在界面生成器中与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);
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

 320.000000 - 546.000000
 320.000000 - 546.000000
Run Code Online (Sandbox Code Playgroud)

并且从顶部开始的480 px以下的所有行都是不可选择的,因为"视图"仍然认为它们超出界限.

我的解决方案

为所有屏幕设置Retina 4的大小,甚至是主窗口xib文件.在此之后,它甚至可以在iphone 4上正常工作.现在,所有低于480px的行都可以在iOS 6模拟器中点击

小智 18

当心设置大小的属性设置为"视网膜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);

}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,使用`[window setFrame:[[UIScreen mainScreen] bounds]]`就足够了,而且它更短.;-) (5认同)

fan*_*ard 11

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

在此输入图像描述


Waa*_*han 3

据我了解,你想创建一个适用于 iPhone 4 和 5 的表格视图。首先,我没有尝试过 Xcode 4.5,但是代码

 CGRect fullScreenRect = [[UIScreen mainScreen] bounds];
 theTableView.frame = CGRectmake = (0,0,fullScreenRect.width,fullScreenRect.height);
Run Code Online (Sandbox Code Playgroud)

fullScreenRect返回当前设备的边界,无论是 3.5 英寸还是 5 英寸。并且您可以动态设置高度和宽度。

让我知道是否有效..

干杯