如何解决从动态tintColor生成CGGradient
| Apple对大多数UIKit都执行此操作。您只需将tintColor传递给元素,它就会自动从中生成一个漂亮的(无论如何在大多数情况下)渐变。 我遇到了这个光泽渐变函数,但结果与我要找的东西相去甚远。我知道也有UIColor扩展添加了诸如\“ lighterColor \”和\“ darkerColor \”之类的方法,但是我怀疑它们是用来生成渐变的(因此会产生难看的渐变)。 那里有没有第三方的类或功能,其执行方式与Apple相似?解决方法
有很多方法可以进行动态着色,但最简单的方法是从绘制预渲染的灰度图像开始,然后使用
kCGBlendModeOverlay
在顶部绘制色彩。 \“叠加\”混合模式的操作类似于Photoshop,对于着色特别有用。
这是我们绘制自定义有色导航栏的方法:
- (void)drawRect:(CGRect)rect {
[[UIImage imageNamed:@\"NavBar.png\"] drawInRect:rect]; // grayscale untinted version
UIColor *tint = [UIColor colorWithRed:1 green:0.5 blue:0.5 alpha:1]; // arbitrary
[tint set];
UIRectFillUsingBlendMode(rect,kCGBlendModeOverlay);
}
您可以直接在Photoshop中预览色调颜色,只需使用叠加混合模式创建一个颜色作为纯色填充的图层即可。
苹果公司为ѭ2和朋友设置色彩的特殊技术似乎是将色彩填充与预先渲染的渐变图像叠加在一起的组合,这些渐变图像的名称类似于在系统图稿文件中找到的\“ UITintedTopBarHighlightFlat.png \”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。