ios - iOS 版本之间的 UIToolbar 疯狂

标签 ios ipad ios4 uinavigationcontroller uitoolbar

所以...我的问题有点奇怪。我有一个简单的 UIToolbar 被添加到在 viewDidLoad 时间调用的 navigationController 的 View 层次结构中。听起来很简单,对吧?那么问题来了:工具栏本身是透明的,但按钮在任何低于 iOS 5 的版本中都没有。

我整晚都在尝试重新排列和重新排序 setFrame、setTranslucent 和 setStyle 的调用,但没有任何效果,它只是一片空白!

所以我脑子放了一个屁:如果我做了一个新项目,然后做了完全相同的 UIToolbar 怎么办?好吧,它奏效了。完美。所以我又脑子放了一个屁:如果只是我的实例坏了怎么办?所以我在现有项目中新建了一个工具栏,它显示为空白...

这让我相信我的 navigationController 的 View 层次结构已损坏,但我不知道以何种方式损坏......有谁知道如何解决我的难题(这是模拟器的东西,还是 iOS 4.3.2 的东西?)?

CODE(适用于 iOS 5+,(尽管已弃用但很有趣),在其他项目中,只是不是我的):

toolbar = [[[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height - 22, self.view.bounds.size.width, 44)]autorelease]; 
    [toolbar setBarStyle:UIBarStyleBlackTranslucent];
    toolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; 
    [self.view addSubview:toolbar];   

以下是来自 iOS 4.3.2 模拟器(顶部)和 iOS 5.0.1 模拟器(底部)的图片: iOS 4.3.2 Simulator iOS 5.0.1 Simulator

编辑:根据 Rob 的建议,我已将代码更改为 self.view addSubview... 但没有任何变化。至于他为什么不使用 navigationController 的内置工具栏的问题,这是因为我实际上有两个工具栏,它们通过图像中的操作按钮上下移动。

编辑 2:为清楚起见,请观察屏幕截图。为什么它是隐形的!!!??我有动画和 View 层次结构。如果有人需要查看 viewDidLoad 方法,它相当庞大且繁琐...

最佳答案

你不应该弄乱 UINavigationController 的 View 树。您应该只弄乱您提供的 View 树部分。

如果您使用的是 UINavigationController,为什么不直接使用导航 Controller 为您提供的工具栏呢?

UINavigationController Class Reference: Displaying a Toolbar
UINavigationController Class Reference: Configuring Custom Toolbars
UIViewController Class Reference: setToolbarItems:animated:

关于ios - iOS 版本之间的 UIToolbar 疯狂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9043208/

相关文章:

ios - 一个 View Controller 中的自定义导航栏更改

iphone - ASIHttprequest 具有一个进度 View 的多个请求

iphone - UITableView 部分索引未按预期工作

iPhone 核心数据因 ARC 崩溃

ios - 如何在应用程序运行时知道 vpn 是否打开?

ios - 核心数据配置和重置数据

ios - 使用 NIB 加载 View 的 UIView.addSubview 只会添加根 UIView

iphone - iPhone-在iOS 3.x上检测单击和长按

objective-c - iPad 分离式键盘

ios - 无法使用 phonegap iOS 为 iPad pro 设置应用程序图标