Ios 如何为动画UIImageView着色?
我正在尝试应用由编程加载的Ios 如何为动画UIImageView着色?,ios,swift,xcode,uiimageview,uiimage,Ios,Swift,Xcode,Uiimageview,Uiimage,我正在尝试应用由编程加载的动画图像组成的UIImageView的色调。目前正在使用iOS 9.3 我想我已经尝试了这里提出的每一种应用色调的解决方案,包括: 使用:let newImage:UIImage设置加载时的.renderMode= UIImage(名称:文件名为 )!!。imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) 在故事板中或以编程方式设置tintView 使用:zeromageview.tintColor=
动画图像组成的UIImageView
的色调。目前正在使用iOS 9.3
我想我已经尝试了这里提出的每一种应用色调的解决方案,包括:
- 使用:
let newImage:UIImage设置加载时的.renderMode=
UIImage(名称:文件名为
)!!。imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
- 在故事板中或以编程方式设置tintView
使用:
zeromageview.tintColor=UIColor.redColor()
- 通过UIImageView本身设置image.renderMode:
zeromageview.image=zeromageview.image!。imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
- 通过界面生成器设置UIImageView的渲染模式
用户定义的运行时属性:
imageRenderingMode编号2
该图像序列是PNG与透明度,因此,我想重新着色的图像,并保持透明度
我运气不好,有点不知所措。想知道这些方法是否只适用于静止的UIAnimationView?任何帮助都将不胜感激,谢谢
下面是一些代码:
// Load all images
while let element = enumerator.nextObject() as? String {
if element.hasSuffix("png") {
let filename: NSString = "Digits/0/" + element
print(filename)
imageNames.append(filename as String)
let newImage: UIImage? = UIImage(named: filename as String)!.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)
images.append(newImage!)
zeroImageView.tintColor = UIColor.redColor()
}
}
// Make animated UIImageView
zeroImageView.userInteractionEnabled = false
zeroImageView.animationImages = images
zeroImageView.animationDuration = 2.0
zeroImageView.startAnimating()
zeroImageView.tintColor = UIColor.redColor()
如果这些都不起作用,那么下一步我将以编程方式在UIImageView的顶部放置一个空UIView。首先,它不会干扰UIImageView中发生的任何事情
我想在这里查看本教程:
这将教您如何以编程方式将UIView添加到故事板。我将在viewDidLoad()方法中添加此代码
您需要更改的主要内容是UIView的背景色。首先,您必须确定色调的颜色(我在代码中看到的颜色是红色),然后明确更改颜色的“Alpha”,使其几乎不显示。更改“Alpha”是因为它基本上是颜色的不透明度
希望这有帮助。试试这个
extension UIImage {
func image(withTint tint: UIColor) -> UIImage? {
guard let cgImage = cgImage else {
return nil
}
UIGraphicsBeginImageContextWithOptions(size, false, scale)
guard let context = UIGraphicsGetCurrentContext() else {
return nil
}
let rect = CGRect(origin: .zero, size: size)
context.translateBy(x: 0, y: size.height)
context.scaleBy(x: 1.0, y: -1.0)
context.setBlendMode(.normal)
context.clip(to: rect, mask: cgImage)
tint.setFill()
context.fill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
}
谢谢你的建议!不幸的是,我正在尝试使用透明自定义类型设计为图像着色。我相信这种方法会在图像顶部应用一个彩色矩形,从而使透明图像后面的“背景”着色?