Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何为动画UIImageView着色?_Ios_Swift_Xcode_Uiimageview_Uiimage - Fatal编程技术网

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
    }
}

谢谢你的建议!不幸的是,我正在尝试使用透明自定义类型设计为图像着色。我相信这种方法会在图像顶部应用一个彩色矩形,从而使透明图像后面的“背景”着色?