設(shè)置導(dǎo)航條顏色漸變

先來看效果圖:

UIView的顏色漸變參考:http://www.itdecent.cn/p/05889da18b2d

在使用上述方式設(shè)置導(dǎo)航條顏色漸變的時候,會發(fā)現(xiàn)導(dǎo)航條的顏色是漸變了,但是標(biāo)題、左右按鈕全部看不見了。

self.navigationController.navigationBar.layer .addSublayer(gradientLayer)

這是因為在navigationBar上加了一層layer之后,把原來的標(biāo)題、左右按鈕全部覆蓋掉了,所以導(dǎo)致看不見。

那么如何來解決導(dǎo)航條顏色漸變的問題呢?

鏘鏘鏘~答案如下:

- (CALayer *)gradientBGLayerForBounds:(CGRect)bounds

{

CAGradientLayer *gradientLayer = [CAGradientLayer layer];

gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor, (__bridge id)[UIColor yellowColor].CGColor];

gradientLayer.locations = @[@0, @1.0];

gradientLayer.startPoint = CGPointMake(0, 0);

gradientLayer.endPoint = CGPointMake(1.0, 0);

gradientLayer.frame = bounds;

return gradientLayer;

}

//設(shè)置導(dǎo)航條的背景為漸變色

- (void)updateNavigationBarBGColor

{

CALayer * bgLayer = [self gradientBGLayerForBounds:CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height)];

UIGraphicsBeginImageContext(bgLayer.bounds.size);

[bgLayer renderInContext:UIGraphicsGetCurrentContext()];

UIImage * bgAsImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

if (bgAsImage != nil)

{

[self.navigationController.navigationBar setBackgroundImage:bgAsImage forBarMetrics:UIBarMetricsDefault];

}

else

{

NSLog(@"Failded to create gradient bg image, user will see standard tint color gradient.");

}

}

其中CAGradientLayer中相關(guān)屬性說明參考:http://www.itdecent.cn/p/05889da18b2d

demo地址:https://github.com/cafei/GradientColorDemo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容