完全自定义 UINavigationBar
Full customisation of UINavigationBar
我目前正在为客户构建 iOS 应用程序,但遇到了一个相当大的障碍。我的意思是,我可以编写自己的 UINavigationBar 之类的东西,但这会导致很多问题。
到目前为止,我已经尝试了我所知道的一切,并花了几个小时寻找解决方案(覆盖 CALayer,使用 CoreGraphics 和几乎所有其他东西),我得到了相同的结果。无论我多么努力地尝试删除 UINavigationBar 的背景,它仍然显示一个略带半透明的白色背景。
我需要在导航栏上进行大量自定义(即从 "blackColor" 到 "clearColor" 的渐变,如果导航栏的背景拒绝,我无法做到这一点完全透明。我尝试将所有 CALayer 从 UINavigationBar 层复制到我添加的子视图,但它一直崩溃,即使在替换委托和超级层时也是如此。
我真的需要帮助。下面是我试图实现的多种效果之一。 (蓝色矩形不是图像的焦点,无关紧要。)
您指的是带有后退按钮和保存按钮的顶部导航栏吗?我只是对图像上的蓝色框也有参考感到困惑。
无论如何,这是一个非常 hacky 的方法,但可以工作:
将 UINavigationBar
的 alpha
设置为 0。“后退”按钮和“保存”按钮可能也会消失,但您可以在完全相同的位置向顶部的视图控制器添加标签.按钮应该仍然可以使用,即使它们是 "invisible" 但用户仍然会认为他们正在触摸它们。
同样,非常 hacky,但是您可以自由地使用 View 的顶部。我确信有更好的方法可以做到这一点,但我目前不在装有 XCode 的计算机附近,无法对其进行测试,而且此修复程序甚至可能无法正常工作,但我想我会提供提出一个可能的临时解决方案。
要使其完全透明:
(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 看起来像这样:
还是我遗漏了什么?
我目前正在为客户构建 iOS 应用程序,但遇到了一个相当大的障碍。我的意思是,我可以编写自己的 UINavigationBar 之类的东西,但这会导致很多问题。
到目前为止,我已经尝试了我所知道的一切,并花了几个小时寻找解决方案(覆盖 CALayer,使用 CoreGraphics 和几乎所有其他东西),我得到了相同的结果。无论我多么努力地尝试删除 UINavigationBar 的背景,它仍然显示一个略带半透明的白色背景。
我需要在导航栏上进行大量自定义(即从 "blackColor" 到 "clearColor" 的渐变,如果导航栏的背景拒绝,我无法做到这一点完全透明。我尝试将所有 CALayer 从 UINavigationBar 层复制到我添加的子视图,但它一直崩溃,即使在替换委托和超级层时也是如此。
我真的需要帮助。下面是我试图实现的多种效果之一。 (蓝色矩形不是图像的焦点,无关紧要。)
您指的是带有后退按钮和保存按钮的顶部导航栏吗?我只是对图像上的蓝色框也有参考感到困惑。
无论如何,这是一个非常 hacky 的方法,但可以工作:
将 UINavigationBar
的 alpha
设置为 0。“后退”按钮和“保存”按钮可能也会消失,但您可以在完全相同的位置向顶部的视图控制器添加标签.按钮应该仍然可以使用,即使它们是 "invisible" 但用户仍然会认为他们正在触摸它们。
同样,非常 hacky,但是您可以自由地使用 View 的顶部。我确信有更好的方法可以做到这一点,但我目前不在装有 XCode 的计算机附近,无法对其进行测试,而且此修复程序甚至可能无法正常工作,但我想我会提供提出一个可能的临时解决方案。
要使其完全透明:
(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 看起来像这样:
还是我遗漏了什么?