Apple对大部分UIKit都是这样做的。你只需将一个tintColor传递给元素,它就会自动从中生成一个漂亮的(在大多数情况下)渐变
我遇到了这个光泽梯度函数,但结果与我想要的相去甚远。我知道也有UIColor扩展添加了"lighterColor"one_answers"darkerColor"等方法,但我怀疑它们是用来生成渐变的(因此会产生模糊的渐变)。
有没有任何第三方类或功能以类似于苹果的方式做到这一点?
有很多方法可以进行动态着色,但最简单的方法是先绘制预渲染的灰度图像,然后使用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中直接预览色调,只需使用叠加混合模式创建一个颜色为实心填充的层。
苹果公司为UINavigationBar
和朋友着色的特殊技术似乎是色调填充加上预渲染渐变图像的叠加,这些图像的名称如系统艺术文件中的"UIIntedTopBarHighlightFlat.png"。