ios - 从 iphone 5 到 iphone 6 的自定义导航栏大小

标签 ios iphone size navigationbar iphone-6

我有一个针对 iPhone 5 优化的自定义标签栏。

UINavigationBar *myBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
[self.view addSubview:myBar];

当它在 iPhone 6 上时,它的一部分当然被剪掉了,因为它只有 320 像素。

我该如何解决这个问题?有没有办法检查它正在运行的iPhone,然后运行像素指定的代码?我计划稍后在此导航栏上放置背景图像,因此它必须居中。

最佳答案

一般来说,像这样对维度进行硬编码并不是一个好主意。如果您旋转,或者在与原始 iPhone 屏幕尺寸不同的屏幕上查看,这将会中断。

其中许多控件都有默认大小,您可以利用它来发挥自己的优势。不要给它一个框架,考虑只修改它给你的框架:

UINavigationBar *myBar = [[UINavigationBar alloc] init];
CGRect navBarFrame = myBar.frame;
navBarFrame.size.height // returns the right size for the current OS
navBarFrame.size.width = self.view.frame.size.width;
myBar.frame = navBarFrame;

这种类型的防御性编码有助于在许多情况下保持您的应用程序的正确布局,包括当您将此控件嵌入父 View Controller 时,或在未来的大屏幕 iOS 设备上查看时。

综上所述,您确定不需要 UIToolbar 吗?通常,您永远不会创建自己的 UINavigationBar,因为该类只是在 UINavigationController 中为您使用。

关于ios - 从 iphone 5 到 iphone 6 的自定义导航栏大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27679553/

相关文章:

iphone - 通过查看相邻页面来分页 UIScrollView

iphone - C 中的快速 4x4 矩阵乘法

c++ - C 宏计算给定编译时常量所需的字节数

ios - 如何在快速执行之间停止GCD

objective-c - objective-c 中的所有属性的 setter/getter 都一样吗?

ios - 如何从Swift中的NSDictionary获取NSDictionary?

iphone - 代码适用于 xib,但不适用于 Storyboard

php - move_uploaded_file - 最大文件大小问题

Android:不同屏幕分辨率下的 Canvas.drawText() 文本大小

objective-c - 如何显示基于 UIWindow 的暗色背景,如 UIAlertView?