【问题标题】:Bottom UIToolbar off screen on iPhone 4 and 4SiPhone 4 和 4S 上的底部 UIToolbar 关闭屏幕
【发布时间】:2015-10-04 21:33:25
【问题描述】:
我的问题和UIToolbar not displaying on iPhone 4 and iPhone 4s很相似
我正在使用 Xcode 7,并试图在各种 iPhone 屏幕尺寸上启动并运行基于“旧版”UINavigationController 的 iPhone 应用程序。通过 legacy ,我的意思是它不使用 Storyboard 等。视图是从 .xib 加载的。
该应用程序是一个经典的 UINavigationController 应用程序,带有 UITableViewControllers,但在表格视图下方的底部有一个 UIToolBar。 TableView 和 ToolBar 是 ViewController 的视图的子视图。
适用于 iPhone5/5s/6/6s。
但在 iPhone 4/4s 上,工具栏不在屏幕上。奇怪的是,如果我将屏幕旋转到横向,工具栏就会出现。转回来,它就消失了。我知道这看起来像是史前的 iOS 代码,但我在这里完全不知所措,浪费了数小时摆弄 Xcode 和 IB。我知道我遗漏了一些明显的东西。
【问题讨论】:
标签:
ios
xcode
controller
navigation
【解决方案1】:
您的表格视图的高度似乎设置为固定高度,其中工具栏在 iPhone 5 及更高版本的表格视图下方可见。要在 iPhone 4/4s 上显示工具栏,需要使用类似以下代码的方法来降低表格视图框架的高度。
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
if (onIphone4 && portraitOrientation) {
CGFloat height = 480 - self.toolbar.frame.size.height;
self.tableView.frame = CGRectMake(0, 0, 320, height); // for iPhone 4/4s
} else if (onIphone5 && portraitOrientation) {
CGFloat height = 568 - self.toolbar.frame.size.height;
self.tableView.frame = CGRectMake(0, 0, 320, height); // for iPhone 5 and up
}
}
如果状态栏和导航栏也存在,您可能需要更改框架原点中的 y 位置。在这种情况下,需要针对这些变化调整整体框架高度。这是调整视图大小的基于框架的方式。
另一种首选方法是在 XIB 中为工具栏和 Interface Builder 中的表格视图添加自动布局约束,以便它们保持相对于屏幕尺寸的适当大小和位置。
【解决方案2】:
我发现了问题..它是 IB 中的“启动时全屏”复选框,用于主“UIWindow”...我引用了 Apple 文档....
“如果您选择在 Interface Builder 中创建窗口,请务必在属性检查器中选择“启动时全屏”选项,以便窗口大小适合当前设备。”
现在请原谅我一头撞墙……浪费了一个星期天!