【发布时间】:2011-11-22 01:03:40
【问题描述】:
我正在尝试为我的 UINavigationBar 上的按钮设置自定义颜色,但仅当其中显示特定的 UIViewController 时(我知道这是可疑的 UI 设计,但这是特定的客户要求)。
我们当前的实现使用 Swizzle 来覆盖所有 UINavigationBar 对象的 drawRect。这是必要的,因此我们的自定义导航栏颜色将应用于标准 iOS 屏幕(例如通过标准 API 添加新联系人时)。
我想将一个特定 UIViewController 的导航栏色调更改为与其他不同,但 Swizzle 始终优先。
我正在 iOS 4.3 模拟器中进行测试。我们支持 iOS 3.x 及更高版本的客户端(iPhone、iPod 和 iPad),所以我不能只使用更新的 iOS 5 API 来自定义它。
我尝试过的其他事情,但没有成功:
添加
setStyle调用(根据this workaround)以使按钮再次更新。我尝试了我发现的
UINavigationButtonhack here(我知道这是一个私有 API,并且有可能被 Apple 拒绝该应用程序)。我也尝试将该代码放入viewWillAppear。
【问题讨论】:
标签: objective-c cocoa-touch iphone-sdk-3.0