     init(icon: ImageLabelAnimatable, title: String) {
         self.icon = icon
         super.init(frame: .zero)
-        addSubviews()
-        addTargets()
         self.title = title
     }
 
     required init?(coder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
+    }
+
+    required init(frame: CGRect) {
+        fatalError("init(frame:) has not been implemented")
     }
 
     func animate() {

        self.icon.finishAnimation?()
    }

    @IBAction func buttonTouchExit() {
        isHighlighted = false
    }

    @IBAction func buttonTouchEnter() {
        isHighlighted = true
    }

    private func addSubviews() {
        addSubview(contentContainer)
        contentContainer.addSubview(icon.view)
        contentContainer.addSubview(label)
    }

    private func addTargets() {
        contentContainer.isUserInteractionEnabled = false
        addTarget(self, action: #selector(buttonTouchEnter), for: [.touchDown, .touchDragEnter])
        addTarget(self, action: #selector(buttonTouchExit), for: [.touchCancel, .touchDragExit, .touchUpInside])


import ElloUIFonts

class ImageLabelControl: Control {
    struct Size {
        static let innerPadding: CGFloat = 5
        static let outerPadding: CGFloat = 5
