为iOS 7半透明UINavigationBar实现明亮生动的色彩
iOS 7.1更新:在此更新中,似乎已忽略了用于修改UINavigationBar中的Alpha通道的解决方法。目前,最好的解决方案似乎是“处理”,并希望您选择的任何颜色都能呈现半透明的效果。我仍在研究解决此问题的方法。 iOS 7.0.3更新:使用iOS 7.0.3时,我们创建的GitHub库已更新为可以稍微解决此问题。不幸的是,没有一种魔术公式可以支持在iOS 7.0.2和更低版本以及iOS 7.0.3中创建的两种颜色。好像苹果公司提高了饱和度,但是却以不透明度为代价(因为模糊的半透明性取决于不透明度)。我和其他一些人正在努力为此创建更好的解决方案。 我敢肯定,很多人已经遇到了iOS 7倾向于使半透明的UINavigationBar的颜色不饱和的问题。 我的目标是使用这种色调但半透明的颜色实现UINavigationBar: 但是,半透明,我明白了。背景视图为白色,据我所知,它将使该视图更浅: 有什么方法可以在保持半透明的同时获得原始颜色?我注意到Facebook能够使其条形成为其丰富的蓝色,如下所示: ..所以我知道一定有办法。背景视图显然在这里有所不同,但是它们的大多数内容也是灰色/白色。看来,无论您使用什么颜色,您都无法在半透明状态下获得鲜艳的色彩。 更新了解决方案。 这是我最终想到的解决方案。我采用了aprato的解决方案,然后将该自定义包含UINavigationBar在一个UINavigationController子类中。我创建了一个存储库,该存储库在下面列出了此实现以及一个示例应用程序。 //////////////////////////// // CRNavigationBar.m //////////////////////////// #import "CRNavigationBar.h" @interface CRNavigationBar () @property (nonatomic, strong) CALayer *colorLayer; @end @implementation CRNavigationBar static CGFloat const kDefaultColorLayerOpacity = 0.5f; static CGFloat const kSpaceToCoverStatusBars = 20.0f; - (void)setBarTintColor:(UIColor *)barTintColor { [super setBarTintColor:barTintColor]; …