2017-11-24 29 views
0

iOSのNavigationBarにグラデーションを追加する方法について多くのことを研究しましたが、必要なものは表示されません。私はTOPにWHITE、BOTTOMにCLEARの2色グラデーションが必要です。このような: enter image description hereナビゲーションバーにグラデーションを追加する方法 - iOS

CAGradientLayerともCRGradientNavigationBar、 を使用してみましたが、私はいつも試してみましたすべてがTOPにホワイトを示したが、私はCLEARに下の色を設定するとき、それは奇妙な黒の半透明の色を示しています。

上記の図のように同様のNavigationBarを達成する方法は?

ありがとうございます!

答えて

1

からthisリンク。実際clearColorは、0のアルファを持つ黒のカラーチャンネルを持っているので、代わりに

[UIColor colorWithWhite:1 alpha:0]

を使用して、それが仕事をします!ありがとう!

+0

他人に役立つ答えを受け入れます – Vinodh

1

グラデーションレイヤーを作成し、ナビゲーションバーの背景として追加します。

CAGradientLayer *gradient = [CAGradientLayer layer]; 

gradient.frame = self.navigationController.navigationBar.bounds; 

gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor blackColor] CGColor], nil]; 

[self.navigationController.navigationBar setBackgroundImage:[self imageFromLayer:gradient] forBarMetrics:UIBarMetricsDefault]; 

レイヤーからイメージを作成します。

(UIImage *)imageFromLayer:(CALayer *)layer 
{ 
    UIGraphicsBeginImageContext([layer frame].size); 

    [layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

    return outputImage; 
} 

もう一つは、githubの内の1つのライブラリ利用可能である:CRGradientNavigationBarあなたもこのライブラリを使用することができます。

+0

私はすでにこれらの両方を行いました。CRGradientNavigationBar 、どちらもクリアカラーの代わりに半透明の黒色を表示するようになります – hyd00

0

画面上部に-70という上限を付けてUIViewを作成し、その中にCAGradientLayerを追加してみてください。 UIImage()// empty imageを追加することで、ナビゲーションバーを透明にします。バックグラウンドとしてUIViewを表示します。

関連する問題