UIImageを継承したクラスを作成したい
理想は以下のように実装したいのです。
enum MyImageType:String{
case OnButton = "on_btn.png"
case OffButton = "off_btn.png"
}
class MyImage: UIImage {
init?(typed type:MyImageType){
super.init(named:type.rawValue) //<-ここでエラーがでます。
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
required convenience init(imageLiteral name: String) {
fatalError("init(imageLiteral:) has not been implemented")
}
}
//使用する際
let myImg = MyImage(typed:.OnButton)
しかし、
Must call a designated initializer of the superclass 'UIImage'
というエラーが出てしまいます。
指定イニシャライザを呼べということなのですが、
class MyImage: UIImage {
init?(typed type:MyImageType){
super.init()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
required convenience init(imageLiteral name: String) {
fatalError("init(imageLiteral:) has not been implemented")
}
}
このように書き直すと、エラーはでないのですが、自分のやりたいことが実現できません。
何か方法はありませんでしょうか。