ios - 如何在界面生成器中制作与 4 英寸 iPhone 兼容的 uitableview

标签 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 英寸屏幕。 当检查具有状态栏和导航栏的 View 的大小时,这里是 self.view.frame.size.height/width 的值,frame 320.000000 x 416.000000 如果我选择 freeform/none/retina 3.5

设置了自动调整选项,以便 View 在各个方向扩展,即启用所有支柱和 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 像素以下的所有行都不可选择,因为“ View ”仍然认为它们超出范围。

我的解决方案

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

最佳答案

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

适用于所有情况的正确解决方案是将大小设置为无,并在应用程序委托(delegate) didfinishloading 方法中检测屏幕大小,并将主窗口设置为该大小或将 rootviewcontroller 的 View 设置为该大小。操作表将正常工作。

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

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

}

关于ios - 如何在界面生成器中制作与 4 英寸 iPhone 兼容的 uitableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12406505/

相关文章:

javascript - 在移动 Chrome 上隐藏键盘不会改变窗口高度

ios - UITableView 顶部的 UISegementController

ios - iPad ios6 中的方向问题

ios - 从 iOS TableViewCell Xib 中删除分隔符

iphone - ios7 导航栏左侧 UIBarButtonItem 问题

c++ - OpenGL 显示空白屏幕。也许是由于着色器?

xcode - OSX Lion 上未生成代码覆盖率文件

ios - 当我尝试导入它时,为什么它说找不到我的类(class),而它显然在侧边栏中?

ios - 使用 iOS6 在 Storyboard 中旋转 UIView

objective-c - 操作无法完成。 ( cocoa 错误 : 3840.)