swift - 使用新参数初始化 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 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
}
}
推荐阅读
- python - Pandas. How do I find the 10 largest values in a column?
- android - 导入 SSL 证书后,Android Emulator 应用程序未连接到网络
- rust - 这种 for 循环模式是否有名称,如果有,是否有更好的方法来编写它?
- docker - Docker 容器无法访问
- reactjs - 在 React useEffect 中减小大小时,窗口调整大小不起作用
- sql - 如何在SQL中的某些条件下使用外键链接两个表?
- javascript - 重复背景固定距离
- sql - 我可以在 SQL Developer 的网格中显示动态 SQL 选择语句的结果吗?
- php - 为什么我们在 Laravel 中使用 Illuminate?它的用途是什么?
- javascript - 是否可以默认加载 URL 并放大 150%?