【问题标题】:iOS: Adding a subview to an object's view from a UIColor category?iOS:从 UIColor 类别向对象视图添加子视图?
【发布时间】: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


【解决方案1】:

你到底在问什么,我有点困惑。但是,如果我没看错,您只想引用调用您的类别方法的原始对象,这样您就可以用它做一些花哨的事情。您不能在方法调用中将对象作为参数传递吗?

self.loginButton.backgroundColor = [UIColor colorWithAwesomenessAndObject:(id)someObject];

我可能会感到困惑并错过了重点,但我希望这会有所帮助

【讨论】:

  • 这可能有效。一旦我传递了对象(假设我正在传递:self.loginButton),我怎样才能检索它的视图,以便我可以向它添加一个子视图。
  • 如果我没记错的话,我认为 UIButton 是 UIView 的子类。因此,如果您有按钮,您不会自动获得视图吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 2018-03-24
相关资源
最近更新 更多