1

我想将自定义 alpha 值应用于UINavigationBar. UINavigationBar是 the 的一部分,而UINavigationControllertheUINavigationController是 a 的一部分UITabBarController

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

我认为实现这一点的唯一方法是子类化UINavigationBar并覆盖一个允许我在绘制时设置 Alpha 的方法。

以下是我的问题:

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

2 回答 2

3

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

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

如果你真的想这样做,只有一种干净、公开的方法:为每个要推送的导航项提供一个自定义标题视图。你可以随心所欲地篡改那个。因此,可以将视图设置UILabel为子视图并将其 alpha 设置为 0.5。

于 2010-08-31T18:41:55.840 回答
0

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

于 2010-08-31T16:04:43.040 回答