完全自定义UINavigationBar

时间:2015-05-29 16:48:01

标签: ios swift uikit uinavigationbar

我目前正在为客户构建iOS应用程序并遇到了相当大的障碍。我的意思是,我可以编写自己的UINavigationBar等,但这将导致很多问题。

到目前为止,我已经尝试了所有知识并花了几个小时寻找解决方案(使用CoreGraphics和其他所有内容覆盖CALayer),我得到了相同的结果。无论我多么努力地删除UINavigationBar的背景,它仍然显示出一个略带半透明的白色背景。

我需要在导航栏上进行大量自定义(IE的梯度从" blackColor"到" clearColor"我不能这样做,如果导航栏的背景拒绝完全透明。我已经尝试将所有CALayers从UINavigationBar层复制到我添加的子视图,它只是一直保持崩溃,即使在替换委托和超级层时也是如此。 / p>

我真的需要帮助。我试图实现的多重效果之一如下。 (蓝色矩形不是图像的焦点,它是无关紧要的。)

App image

2 个答案:

答案 0 :(得分:1)

让它完全透明:

(UINavigationBar.appearance()).translucent = true
(UINavigationBar.appearance()).barTintColor = UIColor.clearColor()
(UINavigationBar.appearance()).backgroundColor = UIColor.clearColor()
(UINavigationBar.appearance()).setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
(UINavigationBar.appearance()).shadowImage = UIImage()

编辑: 使用iOS 8.3看起来像这样:

enter image description here

或者我错过了什么?

答案 1 :(得分:0)

您指的是带有后退按钮的顶部导航栏和右侧的“保存”按钮?我只是对图像上的蓝色框子的参考情况感到困惑。

无论如何,这是一个非常黑客的方法,但可以工作:

UINavigationBar的{​​{1}}设置为0.后退按钮和保存按钮可能也会消失,但您可以在完全相同的位置向顶部的视图控制器添加标签。即使按钮“不可见”,该按钮仍应正常工作,但用户仍然认为它们正在触摸它们。

再次,非常hacky,但你可以随意使用View的顶部。我确定有更好的方法可以做到这一点,但我现在不在XCode的计算机附近,无法测试它,这个修复可能甚至不起作用,但我想我会提供一个可能的临时溶液