ios – 在代码中使用tintColor绘制像UITabBar这样的渐变

ios – 在代码中使用tintColor绘制像UITabBar这样的渐变,第1张

概述默认情况下,UITabBar绘制一个微妙的渐变: 我想用任何给定的tintColor在我的代码中复制这种外观和感觉.为了说清楚:我不想在UITabBar上设置tintColor(从iOS 5开始就可以),我想在我自己的UIView中绘制渐变. 我知道如何绘制渐变,我的问题是如何从tintColor派生渐变的颜色.我正在考虑获得颜色的亮度并使用不同的亮度设置生成其他颜色,但这似乎不能很好地工作,并且 默认情况下,UITabbar绘制一个微妙的渐变:

我想用任何给定的tintcolor在我的代码中复制这种外观和感觉.为了说清楚:我不想在UITabbar上设置tintcolor(从iOS 5开始就可以),我想在我自己的UIVIEw中绘制渐变.

我知道如何绘制渐变,我的问题是如何从tintcolor派生渐变的颜色.我正在考虑获得颜色的亮度并使用不同的亮度设置生成其他颜色,但这似乎不能很好地工作,并且看起来不像我希望它看起来那么好.

我需要我的开源TabbarController的代码:https://github.com/NOUSguide/NGTabBarController

这是我当前创建渐变的代码:

UIcolor *basecolor = self.tintcolor;CGfloat hue,saturation,brightness,Alpha;// Todo: Only works on iOS 5[basecolor getHue:&hue saturation:&saturation brightness:&brightness Alpha:&Alpha];// That's the question,how to compute the colors ...NSArray *colors = [NSArray arrayWithObjects:                   [UIcolor colorWithHue:hue saturation:saturation brightness:brightness+0.2 Alpha:Alpha],[UIcolor colorWithHue:hue saturation:saturation brightness:brightness+0.15 Alpha:Alpha],[UIcolor colorWithHue:hue saturation:saturation brightness:brightness+0.1 Alpha:Alpha],basecolor,nil];NSUInteger colorsCount = colors.count;CGcolorSpaceRef colorSpace = CGcolorGetcolorSpace([[colors objectAtIndex:0] CGcolor]);NSArray *locations = [NSArray arrayWithObjects:[NSNumber numberWithfloat:0.0],[NSNumber numberWithfloat:0.25],[NSNumber numberWithfloat:0.49],[NSNumber numberWithfloat:0.5],nil];CGfloat *gradIEntLocations = NulL;NSUInteger locationsCount = locations.count;gradIEntLocations = (CGfloat *)malloc(sizeof(CGfloat) * locationsCount);for (NSUInteger i = 0; i < locationsCount; i++) {    gradIEntLocations[i] = [[locations objectAtIndex:i] floatValue];}NSMutableArray *gradIEntcolors = [[NSMutableArray alloc] initWithCapacity:colorsCount];[colors enumerateObjectsUsingBlock:^(ID object,NSUInteger index,BOol *stop) {    [gradIEntcolors addobject:(ID)[(UIcolor *)object CGcolor]];}];_gradIEntRef = CGGradIEntCreateWithcolors(colorSpace,(__brIDge CFArrayRef)gradIEntcolors,gradIEntLocations);if (gradIEntLocations) {    free(gradIEntLocations);}
解决方法 这是一个很好的教程: http://www.raywenderlich.com/2079/core-graphics-101-shadows-and-gloss
看看具有光泽效果的部分.

也在这里:http://cocoawithlove.com/2008/09/drawing-gloss-gradients-in-coregraphics.html

这里有一个完整的代码示例:http://www.mlsite.net/blog/?page_id=372

总结

以上是内存溢出为你收集整理的ios – 在代码中使用tintColor绘制像UITabBar这样的渐变全部内容,希望文章能够帮你解决ios – 在代码中使用tintColor绘制像UITabBar这样的渐变所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1053291.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存