iOS 7の半透明のUINavigationBarで明るく鮮やかな色を実現する
iOS 7.1のアップデート:UINavigationBarのアルファチャネルを変更するための回避策は、このアップデートでは無視されているようです。現在のところ、最善の解決策は、「それに対処する」ことであり、選択した色が半透明の効果をレンダリングできることを期待しているようです。私はまだこれを回避する方法を調べています。 iOS 7.0.3のアップデート:作成したGitHubライブラリは、iOS 7.0.3を使用するときにこの問題を少し回避するようにアップデートされました。残念ながら、iOS 7.0.2以前とiOS 7.0.3で作成された両方の色をサポートする魔法の公式はありません。Appleは彩度を改善したようですが、不透明度が犠牲になります(ぼやけた半透明度は不透明度レベルに依存するため)。私は、他の数人と一緒に、これに対するより良い修正の作成に取り組んでいます。 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]; …