我已经研究过如何在iOS中的NavigationBar中添加渐变,但它没有显示我需要的东西。我希望在TOP上使用WHITE的2色渐变,在BOTTOM上使用CLEAR。像这样 :
尝试使用CAGradientLayer
和CRGradientNavigationBar,
但我尝试过的所有内容总是在TOP上显示White,但是当我将底色设置为CLEAR时,它显示出一种奇怪的黑色半透明颜色。
如上图所示,如何实现类似的NavigationBar?
谢谢!
答案 0 :(得分: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中有一个库:CRGradientNavigationBar你也可以使用这个库。
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以尝试使用顶部约束-70在屏幕顶部创建一个UIView,并在其中添加CAGradientLayer。 然后通过添加UIImage()//空图像使您的导航栏透明,作为背景,这样它将在背景中显示具有等级CAGradientLayer的UIView