CRNavigationController 1.1

CRNavigationController 1.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

未声明 维护。



这是一个 UINavigationController 子类,提供了一个更加生动、明亮的 UINavigationBar

iOS 7.1 更新:这次更新再次影响了 UINavigationBar 的颜色方案。这次,似乎任何对 Alpha 通道的修改都被忽略了。这对于我们来说有很大的阻碍,因为我们需要编辑这个值来显示底下的颜色层。我目前正在寻找一个解决方案。

iOS 7.0.3 更新:看起来这个更新改变了导航栏和工具栏的半透明效果。模糊度取决于颜色的 alpha 值。不幸的是,没有神奇的公式可以使在 iOS 7.0.2 和更早版本中制作的颜色与 iOS 7.0.3 中的颜色相同。我发现将导航栏的 alpha 值设置为大约 0.6f-0.8f 可以获得最佳效果;也就是说,您仍然可以获得半透明效果,但代价是鲜艳的颜色。直到我们找到更优解决方案之前,已经移除了额外的颜色层。如果您仍在运行 iOS 7 的早期版本,此库仍然适用!

随着 iOS 7 的发布,苹果公司将半透明效果引入了整个操作系统。作为开发者,我们(在某种程度上)负责利用这些新库来使我们的应用程序与操作系统保持一致。通过引入高斯和半透明导航栏,我们能够为我们展示的视图提供更多的动态上下文。

然而,存在一个细微的缺陷;许多颜色选项相当不饱和。假设您想要一个轻微的、丰富的蓝色半透明导航栏。使用原生类,您会得到这个效果(在白色背景下)

Blue UINavigationBar without Layer

这并不是您所预期的。您可以尝试不同的红色、绿色和蓝色的组合值,但仍无法得到您想要的颜色。这是因为苹果已决定将颜色的饱和度降低大约 40%。此外,它还从其背后继承了某种颜色。因此,我们得到了一个非常淡的蓝色,这并不是我们所想要的。

这就是这个库的用武之地。

这个库对 UINavigationBar 做了一个简单的补充。通过在导航栏背景层上方直接添加一个层,我们可以增强导航栏的鲜艳度。这个层采用了与导航栏 barTintColor 相同的颜色,透明度为 50%。这可以更改,但我发现这个百分比是鲜艳和半透明之间最佳的混合。使用这个库,我们得到

Blue UINavigationBar with Layer

这仍然不能让我们实现绝对的颜色;然而,这使我们朝着正确的方向迈出了许多步骤。

UINavigationControllerCRNavigationController

实现红色 barTintColor

Red UINavigationBar without Layer

vs.

Red UINavigationBar with Layer

实现黑色 barTintColor

Black UINavigationBar without Layer

vs.

Black UINavigationBar with Layer

要求

  • Xcode 5
  • iOS 7.0 (iOS 7.0.3有不同的颜色方案。iOS 7.1也是如此。)
  • 有意愿尝试颜色的变化!

安装

演示

要运行示例项目,首先克隆仓库,然后从示例目录运行 pod install

通过调整开关来更改CRNavigationBar或视图的backgroundColor的颜色,以了解特定颜色在某种barTintColor上可能会有多大的影响。还以十进制和十六进制格式显示了RGB值,供您方便使用,如果决定将其作为查找完美颜色的工具。

贡献者、授权和其他

我不敢独占这一解决方案的荣耀。这是我在 Stack Overflow 上的共同努力,由我和许多人共创。欢迎您将此库用于您的项目。调整设置,找到与您的应用最搭配的色彩搭配!我只要求您保持样板代码不变,并在您决定发布的任何应用中提及使用此库。

我想这里也应该有。臭名昭著的MIT授权

特此授予任何获得此软件及其相关文档文件(以下简称“软件”的副本)的人免费处理的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权持有者不对任何索赔、损害或其他责任(无论因合同、侵权或其他行为而产生)承担责任,无论此类损害或责任源自、由于或在任何与软件或软件的使用或其他交易有关的情况下。