首页 > 解决方案 > 使用新参数初始化 UIImage

问题描述

我怎么能像一个新的初始化

注意:我需要init,而不是static func

extension UIImage {

    convenience init?(named: String, in bundle: Bundle? = nil, compatibleWith collection: UITraitCollection? = nil, rendring: UIImageRenderingMode) {
        self.init(named: named, in: bundle, compatibleWith: collection)
        self = self.imageWithRenderingMode(rendring) // error
        return
    }

}

但我对它的实现有错误

错误:无法赋值:'self' 是不可变的

标签: swift

解决方案


你可以使用这样的东西:

我是在 Swift 4.1 中编写的,您可以进行必要的更改。

extension UIImage {
    convenience init?(named: String, in bundle: Bundle? = nil, compatibleWith collection: UITraitCollection? = nil, rendring: UIImageRenderingMode) {
        if let image = UIImage(named: named, in: bundle, compatibleWith: collection) {
            if let cgImage = image.withRenderingMode(rendring).cgImage {
                self.init(cgImage: cgImage)
            }
        }
        return nil
    }
}

推荐阅读