ios - 如何在导航栏中添加渐变-iOS

标签 ios objective-c uinavigationbar gradient

我已经研究了很多有关如何在iOS的NavigationBar中添加渐变的方法,但是并没有显示我的需要。我想要2种颜色渐变,顶部为白色,底部为透明。像这样 :
enter image description here

尝试使用CAGradientLayerCRGradientNavigationBar
但是我尝试过的所有操作始终在顶部显示白色,但是当我将底部颜色设置为“透明”时,它显示出奇怪的黑色半透明颜色。

如何实现上图所示的类似NavigationBar?

谢谢!

最佳答案

创建渐变层并将其添加为导航栏的背景。

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您也可以使用此库。

关于ios - 如何在导航栏中添加渐变-iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47473336/

相关文章:

ios - 来自 native 应用程序的 Instagram API OAuth

ios - 如何设置表格 View 单元格之间的空间并删除背景内容 View 的白色

objective-c - 使用 KVC 展平一系列字典

ios - 重新加载导航栏

ios - 栏按钮项目图标大小和宽度

ios - 我在哪里可以找到 libsystem_c.dylib 的源代码?

ios - 在 iPhone 5s 或 64 位模拟器上测试 32 位 iOS 应用程序

iphone - 访问 UITableView 部分标题中的 UI 元素

swift - 当 Swift 中的导航标题很长时,避免为后退按钮显示 "back"

objective-c - 在 iOS/OS X 上获取系统启动的精确时间