代码之家  ›  专栏  ›  技术社区  ›  Jesse Bunch

在Xcode中将UINavigationBar子类化

  •  0
  • Jesse Bunch  · 技术社区  · 15 年前

    我想将自定义alpha值应用于 UINavigationBar . 这个 是这个计划的一部分 UINavigationController 以及 导航控制器 UITabBarController .

    编辑: 下面是我使用UIToolbar和UILabel创建的内容的图片。我想使用UINavigationController中的标题执行相同的操作: http://i.stack.imgur.com/B8YX0.png

    我认为实现这一点的唯一方法是将 重写一个方法,让我在绘制时设置Alpha。

    以下是我的问题:

    1. 这有什么后果?
    2. 我对Objective-C中的子类还不熟悉,你能提供一个指导吗 帮助我掌握子类化 UI元素并实现更改?
    3. 当我配置了子类时,我可以通过更改 导航栏
    4. 有没有什么“陷阱”可以想出一个 像你这样的专家能帮我个忙吗?
    2 回复  |  直到 12 年前
        1
  •  3
  •   Yojimbo paan    8 年前

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

    • 没有公共API,所以它不是微不足道的
    • 篡改子视图是脆弱的,可能会损坏并可能产生副作用
    • 这是不可预见的——使用视图的alpha值 按下/弹出控制器时

    如果您真的想这样做,只有一种干净的、公开的方法:为每个要推送的导航项提供一个自定义标题视图。你想怎么做就怎么做。所以可以用 UILabel 作为子视图并将其alpha设置为0.5。

        2
  •  0
  •   Brian    15 年前

    当导航栏由导航控制器管理时,只允许更改几个属性(请参见 docs ). 其中之一就是 translucent 它会调整alpha值,但只能调整为苹果确定的值。