繁体   English   中英

iOS中模糊的半透明导航栏

[英]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 = trueself.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上消失

plist中

也许plist更改可以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM