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

在iOS中,如果UILabel从UIView继承,那么为什么UILabel不能使用动画方法?,ios,uiview,uilabel,Ios,Uiview,Uilabel,在iOS中,如果UILabel从UIView继承,那么为什么UILabel不能使用animate方法,我又如何知道如何升级类?我知道它可能是UIView类私有的,但是让它也直接用于UILabel难道没有意义吗?苹果或开发者如何决定哪些方法应该或不应该可用 下面是一个例子: func animateLabelTransitions(){ UIView.animate(withDuration: 3.5, animations: {self.questionLabel.alpha =

在iOS中,如果UILabel从UIView继承,那么为什么UILabel不能使用animate方法,我又如何知道如何升级类?我知道它可能是UIView类私有的,但是让它也直接用于UILabel难道没有意义吗?苹果或开发者如何决定哪些方法应该或不应该可用

下面是一个例子:

func animateLabelTransitions(){
        UIView.animate(withDuration: 3.5, animations: {self.questionLabel.alpha = 1})
    }
animate是一个类方法,而不是实例方法;它同时适用于所有视图,而不是某些特定视图。无需指定要设置动画的对象。可以在块中放置许多对象,并将它们一起设置动画。如果调用UILabel.animate。。。并在块内设置了一个按钮的动画?这将是完全合法的,因为它只会调用UIView版本,该版本可以设置任何动画,但非常混乱。

animate是一个类方法,而不是实例方法;它同时适用于所有视图,而不是某些特定视图。无需指定要设置动画的对象。可以在块中放置许多对象,并将它们一起设置动画。如果调用UILabel.animate。。。并在块内设置了一个按钮的动画?这是完全合法的,因为它只会调用UIView版本,该版本可以制作任何动画,但非常混乱。

UILabel可以使用动画制作方法。它们是UIView的类方法,这意味着它们也是UIView的任何子类的类方法

虽然毫无意义,但您可以将代码编写为:

func animateLabelTransitions(){
    UILabel.animate(withDuration: 3.5, animations {
        self.questionLabel.alpha = 1
    })
}
但这有什么意义呢?这会让很多人感到困惑。只需在UIView上调用动画方法

在UIView上调用animate并不意味着它限制了可以在动画或完成块中放置的内容。

UILabel可以使用animate方法。它们是UIView的类方法,这意味着它们也是UIView的任何子类的类方法

虽然毫无意义,但您可以将代码编写为:

func animateLabelTransitions(){
    UILabel.animate(withDuration: 3.5, animations {
        self.questionLabel.alpha = 1
    })
}
但这有什么意义呢?这会让很多人感到困惑。只需在UIView上调用动画方法



在UIView上调用animate并不意味着它限制了可以在动画或完成块中放置的内容。

您的label.alpha在animate块之前是0?@ReinierMelian yes,将其设置为0将显示在视图中。我不太理解您的问题,您是这么说的。标签的alpha属性无法设置动画?@ReinierMelian这段代码很有效,但我想说或问的是,如果UILabel从UIView继承,开发人员为什么不让UILabel直接访问animate方法?animate方法没有“接收器”没有任何接收函数的实例,它是一个类方法你的label.alpha在animate块之前为0?@ReinierMelian是,将其设置为0将显示在视图中。我不太理解您的问题,您是这么说的。标签的alpha属性无法设置动画?@ReinierMelian这段代码很有效,但我想说或问的是,如果UILabel从UIView继承,为什么开发人员不让UILabel直接访问animate方法呢?animate方法没有“接收器”没有任何接收函数的实例,这是一个类方法很好的答案+1@RobNapier谢谢我可以问你怎么知道它是一个静态方法,因为当我在线查看参考文档时,animate函数的前缀是“class”。例如,在这个苹果参考文档中,动画功能:是;类方法。ObjC中没有明显的区别。@RobNapier我将投票给你作为最佳答案,因为GUI将你排在首位,因为我猜你是第一个。如果可以的话,你能详细阐述一下你的观点吗?为什么在ObjC中静态方法和类方法没有很强的区别?ObjC根本没有静态方法;它只有类方法。阅读以获得良好的概述。但也要注意ObjC开发人员在评论和回答中使用的术语和含义差异极大。bbum当然是对的,他通常在大多数话题上都是对的,但在可可世界里,混淆术语是很常见的。我不是有意要把你搞糊涂的。回答得好+1@RobNapier谢谢我可以问你怎么知道它是一个静态方法,因为当我在线查看参考文档时,animate函数的前缀是“class”。例如,在这个苹果参考文档中,动画功能:是;类方法。ObjC中没有明显的区别。@RobNapier我将投票给你作为最佳答案,因为GUI将你排在首位,因为我猜你是第一个。如果可以的话,你能详细阐述一下你的观点吗?为什么在ObjC中静态方法和类方法没有很强的区别?ObjC根本没有静态方法;它只有类方法。阅读以获得良好的概述。但也要注意野性
ObjC开发人员在评论和回答中使用的不同术语和含义。bbum当然是对的,他通常在大多数话题上都是对的,但在可可世界里,混淆术语是很常见的。我不是有意要把你搞糊涂的,似乎是合法的。如果我是一名苹果开发者,我只会担心,因为它是一个类方法,所以它会影响所有的UIView。这段代码对我们社区是否可见,以了解苹果是如何将此方法组合在一起的?如果这是一个愚蠢的问题,我道歉。它确实使所有的UIView都充满活力。不,我们没有这方面的源代码,尽管对大多数w/Hopper进行反向工程并不是那么困难……我们没有尝试过这一个,但总是这样educational@RobNapier我明白了,我猜我们直接调用我们想要动画的视图,就像我上面做的那样。更有意义的是,我可以问一下,有没有一种方法可以让我们在ViewController中获取所有可见的UIView,而不是直接对每个UIView进行编码?@Q.a.Neuro.Tech类方法意味着您可以调用它,而不需要类的特定实例。不要混淆调用类方法与影响该类的所有当前现有实例。他们彼此无关。没有什么可怕的。在UIView上调用类方法对任何视图都没有影响,除非该特定方法恰好被编写为影响明确指定的视图,例如动画方法。这些只影响你在animation block.OMG中告诉它的那些视图,我刚才不得不在谷歌上研究如何投票选出最佳答案。你太棒了,随着时间的推移,你已经改进了我的问题,我非常感谢你早些时候提出的编辑建议。你也给了我安慰和鼓励,但是GUI把@RobNapier答案放在了最前面,我猜是因为他是第一个。我今天最艰难的决定似乎是合法的。如果我是一名苹果开发者,我只会担心,因为它是一个类方法,所以它会影响所有的UIView。这段代码对我们社区是否可见,以了解苹果是如何将此方法组合在一起的?如果这是一个愚蠢的问题,我道歉。它确实使所有的UIView都充满活力。不,我们没有这方面的源代码,尽管对大多数w/Hopper进行反向工程并不是那么困难……我们没有尝试过这一个,但总是这样educational@RobNapier我明白了,我猜我们直接调用我们想要动画的视图,就像我上面做的那样。更有意义的是,我可以问一下,有没有一种方法可以让我们在ViewController中获取所有可见的UIView,而不是直接对每个UIView进行编码?@Q.a.Neuro.Tech类方法意味着您可以调用它,而不需要类的特定实例。不要混淆调用类方法与影响该类的所有当前现有实例。他们彼此无关。没有什么可怕的。在UIView上调用类方法对任何视图都没有影响,除非该特定方法恰好被编写为影响明确指定的视图,例如动画方法。这些只影响你在animation block.OMG中告诉它的那些视图,我刚才不得不在谷歌上研究如何投票选出最佳答案。你太棒了,随着时间的推移,你已经改进了我的问题,我非常感谢你早些时候提出的编辑建议。你也给了我安慰和鼓励,但是GUI把@RobNapier答案放在了最前面,我猜是因为他是第一个。我今天最艰难的决定。