我正在开发一个应用程序 - 或者更确切地说,我正在开发一些可重复使用的“框架”,一旦它运行起来我很乐意分享。在此应用程序中,用户应该能够从颜色主题列表中进行选择。因此,应用程序必须能够以某种相当动态的方式为其 UI 元素着色。
对于按钮,所有着色都不起作用。必须在此处提供适当着色的背景图像。但是为每个人准备一组背景图片只是次优的选择。它不够动态和灵活。
最终,解决方案可能归结为为选定状态和正常状态提供一个单色(灰色)渐变图像,并使用 CoreGraphics 或 OpenGL 以编程方式为该图像着色。但坦率地说,我不知道从哪里开始。渐变应该是什么样子,然后我将如何以编程方式将其着色为任何给定颜色?
几乎适用于 UISegmentedControls,只是稍微复杂一点。 :) 任何涵盖 UISegementedControls 的通用解决方案也受到高度赞赏。
最佳答案
在 iOS7 中,您可以将方法 imagedWithRenderingMode:
与方法 setTintColor:
结合使用
但是,请务必使用 UIImageRenderingModeAlwaysTemplate
,因为它会将 UIImage
上的所有非透明颜色替换为淡色。默认为 UIImageRenderingModeAutomatic
。
UIImageRenderingModeAlwaysTemplate
Always draw the image as a template image, ignoring its color information.
objective-C :
UIImage * image = [myButton.currentImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[myButton setImage:image forState:UIControlStateNormal];
swift :
let image = myButton.currentImage?.withRenderingMode(.alwaysTemplate)
myButton.setImage(image, for: .normal)
关于ios - 如何以编程方式和动态地为 UIButton 的背景图像着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14511639/