Apple为大多数UIKit做到这一点。您只需将tintColor传递给元素,它就会自动生成一个很好的(在大多数情况下无论如何)渐变。
我遇到了this gloss gradient function,但结果远非我想要的。我知道还有UIColor extensions添加了诸如“lighterColor”和“darkerColor”之类的方法,但我怀疑它们是否会产生渐变(因此会产生难看的渐变)。
是否有任何第三方类或功能以类似于Apple的方式执行此操作?
答案 0 :(得分:4)
有很多方法可以进行动态着色,但最简单的方法是先绘制预渲染的灰度图像,然后使用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中预览色彩颜色,只需使用叠加混合模式创建一个颜色为实心填充的图层。
Apple专门用于着色UINavigationBar
和朋友的技术似乎是色彩填充加上预渲染渐变图像的叠加,其中包含系统图稿文件中的“UITintedTopBarHighlightFlat.png”等名称。