[英]How to get the blurred and translucent effect on a navigation bar in iOS 7?
[英]Blurred translucent navigation bar in iOS
我正试图在我的Swift iOS应用程序中获得这种模糊 - 半透明的导航栏效果(图像中的第一个导航栏):
但我不能完成这件事。 我尝试了几种方法,其中一些方法如下:
setBackgroundImage, shadowImage and translucent attrs in AppDelegate (Getting the NavController from the RootViewController attr)
AppDelegate主要方法中的那些行:
UINavigationBar.appearance().translucent = true;
UINavigationBar.appearance().barTintColor = UIColor(white: 1, alpha: 0.4)
从UIBuilder更改属性
在viewControllers中设置self.automaticallyAdjustsScrollViewInsets = true
和self.edgesForExtendedLayout = UIRectEdge.None
UIRectEdge.None
但仍然无法让这个工作。 我正在使用iOS 8.1和9.0在XCode模拟器上运行该应用程序
我做错了什么?
在didFinishLaunchingWithOptions中添加以下代码:
对于Objective C
[[UINavigationBar appearance] setTranslucent:NO];
适用于Swift 3 + / iOS 10+
UINavigationBar.appearance().isTranslucent = false
第二个导航栏已经是半透明和模糊 - 它不像第一个导航栏那样半透明。 如果打开数字色度计并将鼠标悬停在屏幕截图上,则可以看到第二个导航栏的背景在覆盖图像的区域中较暗。
之所以第一导航栏是更半透明比第二导航棒中说明了这个问题 :所述第一杆的屏幕截图是从运行iOS 7.0.2一个装置拍摄,而第二栏的屏幕截图是从设备拍摄运行iOS 7.0.4。 Apple改变了UINavigationBar在这些iOS版本之间的行为,并再次改变了iOS 7.1的行为。
Apple 解释了目前的半透明机制如下:
半透明条形图将其
barTintColor
与灰色混合,然后将其与系统定义的Alpha值组合,以生成最终背景颜色,用于将条形图与其覆盖的内容进行合成。
模糊效果的唯一描述如下:
默认情况下,iOS 7中的导航栏是半透明的。此外,系统模糊应用于所有导航栏。
您可以使用UIImage.imageWithColor:
来更改条形图的透明度UIImage.imageWithColor:
使用适当的Alpha值从UIColor为条形图制作背景图像,但这样做会消除模糊效果。 没有记录的方法来改变“系统定义的alpha值”以增加条的半透明度而不删除“系统模糊”。
如果你想在iOS 8.1和9.0上模仿旧的半透明和模糊效果,你需要创建自己的UINavigationBar子类并插入一个或多个子视图,例如UIView,背景颜色使用适当的alpha值(对于透明度)和/或UIVisualEffectView(用于模糊效果)。
您可以在此问题的答案之一中找到组合视图。
相关: 模糊效果在iOS 7.1上消失
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.