在iOS中,如果UILabel继承自UIView,那么为什么UILabel没有可用的动画方法?我怎么知道上课?我知道它对于UIView类可能是私有的,但将它直接提供给UILabel也没有意义吗? Apple或开发人员如何决定应该或不应该使用哪些方法?
以下是一个例子:
func animateLabelTransitions(){
UIView.animate(withDuration: 3.5, animations: {self.questionLabel.alpha = 1})
}
答案 0 :(得分:3)
animate
方法适用于UILabel
。它们是UIView
的类方法,这意味着它们也是UIView
的任何子类的类方法。
虽然没有意义,但您可以将代码编写为:
func animateLabelTransitions(){
UILabel.animate(withDuration: 3.5, animations {
self.questionLabel.alpha = 1
})
}
但重点是什么?这会让很多人感到困惑。只需在animate
上调用UIView
方法。
仅仅因为您在animate
上致电UIView
并不意味着它会限制您可以放入动画或完成版块中的内容。
答案 1 :(得分:2)
animate
是一个类方法,而不是实例方法;它同时适用于所有视图,而不是某些特定视图。我们无需指定您尝试制作动画的内容。您可以在块中放入许多内容并将它们组合在一起。如果你打电话给UILabel.animate(...)
并在块内动画一个按钮,你会发生什么?这将是完全合法的(因为它只会调用UIView
版本,它可以动画任何东西),但非常令人困惑。