在Xcode中对UINavigationBar进行子类化

时间:2010-08-31 15:56:07

标签: iphone objective-c uinavigationbar subclassing

我想将自定义Alpha值应用于UINavigationBar的标题。 UINavigationBarUINavigationController的一部分,UINavigationControllerUITabBarController的一部分。

编辑:这是我使用UIToolbar和UILabel创建的图片。我想使用UINavigationController中的标题:http://i.stack.imgur.com/B8YX0.png

来做同样的事情

我认为实现这一目标的唯一方法是继承UINavigationBar并覆盖一个允许我在绘制时设置Alpha的方法。

以下是我的问题:

  1. 这是正确的方法吗?
  2. 这对HIG有什么影响?
  3. 我是Objective-C的子类化新手,你能提供指南吗? 这篇教程将帮助我掌握子类化中所需的步骤 UI元素并实施更改?
  4. 当我配置子类时,我可以通过更改在IB中查看它 我的自定义类UINavigationBar的类,对吗?
  5. 是否有任何“陷阱”可以提出子类化 像你这样的专家可以帮我一个忙吗?

2 个答案:

答案 0 :(得分:3)

这是你不应该做的事情。你为什么要改变那种颜色而不是改变酒吧的整体不透明度?它降低了可读性。有很多问题:

  • 没有公共API,所以它不是微不足道的
  • 篡改子视图是脆弱的,可能会破坏并可能产生副作用
  • 预计无法完成 - 在推送/弹出控制器时使用视图的alpha值并使用动画

如果您真的想这样做,那么只有一种干净,公开的方式:将每个导航项目推送到自定义标题视图。您可以根据需要篡改那个。因此,可以将UILabel设置为子视图,并将其alpha设置为0.5。

答案 1 :(得分:0)

当导航栏由导航控制器管理时,只允许更改少数属性(请参阅docs)。其中一个是translucent调整alpha,但仅限于Apple确定的值。

相关问题