提问者:小点点

使用新参数初始化UIImage[重复]


我如何像一个

注意:我需要init,而不是静态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”是不可变的


共1个答案

匿名用户

你可以使用这样的东西:

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