【发布时间】:2014-08-19 21:08:50
【问题描述】:
好的,所以这个问题可能听起来有点令人困惑,而且我相信你们中的许多人会质疑我正在尝试做什么而不是提供答案,所以请尝试回答或提供建议。
我有一个UIColor 类别,其中一个对象(比如说loginButton)可以调用该类别中的一个方法(即+ (UIColor *)colorWithAwesomeness)。我已经返回了一种颜色,一切都很好。问题是其中一个步骤需要我将子视图添加到对象的视图中。如何从该方法中访问该对象。我试过self(如果我将此方法设置为实例方法,则self在这种情况下显然不起作用UIColor),我也尝试过[self class],它指的是这个类别类。
有没有办法做到这一点,以便我可以通过在我的 mainController 中调用一行来设置颜色并添加子视图:
self.loginButton.backgroundColor = [UIColor colorWithAwesomeness];
附:我确信我可以继承这个对象,但我希望能够按照我上面提到的方式来做,因为我希望它适用于任何具有颜色属性的 NSObject。
【问题讨论】:
-
在我看来,从
UIColor类别修改对象似乎是一种糟糕的设计策略。子类化是更好的选择。 -
我同意你的看法。我只有几个 colorWith 方法,用渐变做同样的事情会很酷,除了那些需要在对象的视图中添加一个 CAGradientLayer 。我正在考虑将 backgroundColor 设置为红色,然后在上面应用一个从红色到橙色的渐变层。
标签: ios objective-c object subview objective-c-category