当前位置:  开发笔记 > IOS > 正文

iOS中模糊的半透明导航栏

如何解决《iOS中模糊的半透明导航栏》经验,为你挑选了2个好方法。

我正试图在我的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更改属性

设置self.automaticallyAdjustsScrollViewInsets = trueself.edgesForExtendedLayout = UIRectEdge.None在viewControllers中

但仍然无法让这个工作.我正在使用iOS 8.1和9.0在XCode模拟器上运行该应用程序

我做错了什么?



1> Mitul Marson..:

didFinishLaunchingWithOptions中添加以下代码:

对于Objective C

  [[UINavigationBar appearance] setTranslucent:NO];

适用于Swift 3 +/iOS 10+

UINavigationBar.appearance().isTranslucent = false



2> jamesk..:

第二个导航栏已经是半透明和模糊的,只是不如第一个导航栏半透明。如果打开Digital Color Meter,然后将鼠标悬停在屏幕截图上,则可以看到第二个导航栏的背景在覆盖图像的区域更暗。

之所以第一导航栏是更半透明比第二导航棒中说明了这个问题:所述第一杆的屏幕截图是从运行iOS 7.0.2一个装置拍摄,而第二栏的屏幕截图是从设备拍摄运行iOS 7.0.4。苹果在这些版本的iOS之间以及在iOS 7.1中再次更改了UINavigationBar的行为。

苹果对当前的半透明机制进行了如下解释:

半透明的条将其barTintColor与灰色混合,然后再将其与系统定义的alpha值组合,以产生最终的背景色,该背景色用于将条与上层内容混合在一起。

对模糊效果的唯一描述似乎如下:

默认情况下,iOS 7中的导航栏是半透明的。此外,所有导航栏都有系统模糊。

您可以通过使用UIImage.imageWithColor:具有适当的Alpha值的UIColor为条形制作背景图像来更改条形的透明度,但是这样做会消除模糊效果。没有记录的方法来更改“系统定义的Alpha值”以增加条形的半透明性而没有消除“系统模糊”。

如果要在iOS 8.1和9.0上模仿旧的半透明和模糊效果,则需要制作自己的UINavigationBar子类,并插入一个或多个子视图,例如UIView,其背景色使用适当的alpha值(对于透明度)和/或UIVisualEffectView(用于模糊效果)。

您可能可以在此问题的答案之一中找到组合视图。

相关: 模糊效果在iOS 7.1上消失了

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有