我想在自定义视图中使用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”类型。我的问题是,做这种操作的正确方法是什么。
答案 0 :(得分:1)
为什么不创建CustomImageView类并符合Appearable协议?
class CustomImageView: UIImageView, Appearable {}
现在你可以做你需要的事情:
let imageView = CustomImageView()
imageView.image = myImage
并使用默认协议方法:
imageView.appear(duration: 2.0, delay: 0.0)