在自定义View类中使用UIImageView的正确方法

时间:2017-03-18 19:19:58

标签: ios swift uiview uiimageview

我想在自定义视图中使用Appearable协议中的方法。

protocol Appearable { }

extension Appearable where Self: UIView { 

    func appear(duration: Double, delay: Double) {
        self.alpha = 0

        UIView.animate(withDuration: duration, delay: delay, options: .curveEaseIn, animations: {
            self.alpha = 1
            self.transform = CGAffineTransform(scaleX: 2.0, y: 1.5)
        }, completion: nil)

        self.transform = CGAffineTransform.identity
    }
}

我的自定义视图:

class CustomView: UIView, Appearable {}

在我的MainView中,我创建了一个带有想要在屏幕上显示的图像的变量。

class MainView: UIView {
    let randomView: CustomUIView = {
    var image = CustomUIView()
    image = UIImageView(image: myImage)

    return image
}

此代码不起作用,因为无法将“UIImageView”类型的值指定为“CustomView”类型。我的问题是,做这种操作的正确方法是什么。

1 个答案:

答案 0 :(得分:1)

为什么不创建CustomImageView类并符合Appearable协议?

class CustomImageView: UIImageView, Appearable {}

现在你可以做你需要的事情:

let imageView = CustomImageView()
imageView.image = myImage

并使用默认协议方法:

imageView.appear(duration: 2.0, delay: 0.0)