ios - UIImage animationImages 色调颜色?

标签 ios xcode swift uiimage

有没有办法给动画中的图像着色?

我知道我可以像这样给单个图像着色:

var imageOne:UIImage = UIImage(named: "pullto_1.png")!;
    imageOne = imageOne.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate);
    refSequence.image = imageOne;

但是当我尝试这样做时,它就不起作用了:

 var imageOne:UIImage = UIImage(named: "pullto_1.png")!;
    imageOne = imageOne.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)

    var image2:UIImage = UIImage(named: "pullto_2.png")!;
    image2 = image2.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)

    var image3:UIImage = UIImage(named: "pullto_3.png")!;
    image3 = image3.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)

    var image4:UIImage = UIImage(named: "pullto_4.png")!;
    image4 = image4.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate)

    refSequence.animationImages = NSArray(objects: imageOne,
        image2,
        image3,
        image4

    );

    refSequence.animationDuration = 1.4;
    refSequence.animationRepeatCount = 99;
    refSequence.startAnimating();

我做错了什么吗?有没有什么方法可以给动画中的图像着色?

谢谢

最佳答案

好吧,我希望有一个更简单的解决方案,但这就是我最终做的:

此函数将创建一个具有所需颜色的新图像:

func imageWithColor(img:UIImage, color:UIColor)->UIImage{
    UIGraphicsBeginImageContextWithOptions(img.size, false, img.scale);
    var context = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(context, 0, img.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextSetBlendMode(context, kCGBlendModeNormal);
    var rect = CGRectMake(0, 0, img.size.width, img.size.height);
    CGContextClipToMask(context, rect, img.CGImage)
    color.setFill();
    CGContextFillRect(context, rect);
    var newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

然后你可以这样调用它:

var imageOne:UIImage = UIImage(named: "pullto_1.png")!;
    imageOne = imageWithColor(imageOne, color: UIColor.redColor());
    var image2:UIImage = UIImage(named: "pullto_2.png")!;
    image2 = imageWithColor(image2, color: UIColor.redColor());
    var image3:UIImage = UIImage(named: "pullto_3.png")!;
    image3 = imageWithColor(image3, color: UIColor.redColor());
    var image4:UIImage = UIImage(named: "pullto_4.png")!;
    image4 = imageWithColor(image4, color: UIColor.redColor());

    loaderS.animationImages = NSArray(objects: imageOne,
        image2,
        image3,
        image4

    );



    loaderS.animationDuration = 1.4;
    loaderS.animationRepeatCount = 99;
    loaderS.startAnimating();

关于ios - UIImage animationImages 色调颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148994/

相关文章:

ios - Xcode 11 构建系统有问题?

swift - 如何比较两个字符串以检查它们是否具有相同的字符 Swift 4?

ios - 在 swift 2.3 中使用 Alamofire 调用 Web 服务时出错

ios - 以编程方式更改 UICollectionView 中的第一项

ios - Xcode - 围绕中心绘制圆圈

swift - 快速掉落机会

ios - 从 subview 中更改在父 View 上设置的约束

ios - 错误: Generic parameter 'R.Generator.Element' cannot be bound to non-@objc protocol type 'AnyObject'

ios - 将具有byte []的类添加到iOS共享扩展(Xamarin)中的NSUserDefaults

objective-c - Open WithCompletionHandler : is complete 后如何返回结果