理想は以下のように実装したいのです。

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")
    }
}

このように書き直すと、エラーはでないのですが、自分のやりたいことが実現できません。
何か方法はありませんでしょうか。