在iOS中,如果UILabel继承自UIView,那么为什么UILabel不能使用animate方法?

时间:2017-11-30 14:58:24

标签: ios uiview uilabel

在iOS中,如果UILabel继承自UIView,那么为什么UILabel没有可用的动画方法?我怎么知道上课?我知道它对于UIView类可能是私有的,但将它直接提供给UILabel也没有意义吗? Apple或开发人员如何决定应该或不应该使用哪些方法?

以下是一个例子:

func animateLabelTransitions(){
        UIView.animate(withDuration: 3.5, animations: {self.questionLabel.alpha = 1})
    }

2 个答案:

答案 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版本,它可以动画任何东西),但非常令人困惑。