ios – 覆盖UIImage(命名:)

我正在去覆盖UI
Image类方法init(名为:).我的目标是能够检索图像的文件名.

代码如下所示:

class UIImageWithFileName: UIImage {

    let fileName: String

    override init(named:String){
        super.init(named)
    fileName = named
    }
}

由于以下原因,此代码似乎是不可能的.

我创建了一个UIImage的子类,开始输入init ……令我惊讶的是没有init(命名:)方法来覆盖.以下是init方法的完整列表:

《ios – 覆盖UIImage(命名:)》

《ios – 覆盖UIImage(命名:)》

如何覆盖UIImage init(名为:)

最佳答案 事实证明“init(named:”显然不可继承.

如果你看一下UIImage的定义,你会看到:

public class UIImage : NSObject, NSSecureCoding, NSCoding {

    public /*not inherited*/ init?(named name: String) // load from main bundle

    @available(iOS 8.0, *)
    public /*not inherited*/ init?(named name: String, inBundle bundle: NSBundle?, compatibleWithTraitCollection traitCollection: UITraitCollection?)

这意味着您需要自己解析或打开文件并将原始数据传递到超类中.

点赞