我正在开发一个应用程序 – 或者更确切地说是一些可重用的“框架”,我很乐意在它工作时分享它.在此应用程序中,用户应该能够从颜色主题列表中进行选择.因此,应用程序必须能够以某种相当动态的方式对其UI元素进行着色.
对于按钮,所有着色都不起作用.必须在此处提供正确着色的背景图像.但是为每个人准备一套背景图像只是第二好的.它不够动态和灵活.
最后,解决方案可能归结为为所选和正常状态提供一个单色(灰色)梯度图像,并使用CoreGraphics或OpenGL以编程方式对图像着色.但坦率地说,我不知道从哪里开始.渐变应该如何,然后我将如何以任何给定的颜色以编程方式着色?
几乎适用于UISegmentedControls,只是有点复杂. :)任何涵盖UISegementedControls的通用解决方案也非常感谢.
解决方法
我在另一篇文章后面创建了一个UI
Image类别,我发现它不需要图像和色调,如下所示:
- (UIImage *)tintedImageWithColor:(UIColor *)tintColor { UIGraphicsBeginImageContextWithOptions(self.size,NO,[[UIScreen mainScreen] scale]); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(context,self.size.height); CGContextScaleCTM(context,1.0,-1.0); CGRect rect = CGRectMake(0,self.size.width,self.size.height); // draw alpha-mask CGContextSetBlendMode(context,kCGBlendModenormal); CGContextDrawImage(context,rect,self.CGImage); // draw tint color,preserving alpha values of original image CGContextSetBlendMode(context,kCGBlendModeSourceIn); [tintColor setFill]; CGContextFillRect(context,rect); UIImage *coloredImage = UIGraphicsGetimageFromCurrentimageContext(); UIGraphicsEndImageContext(); return coloredImage; }
这将拍摄图像并使用给定颜色的alpha值填充所有区域.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。