【问题标题】:setTitleColor:forState in UIButton subclass initWithCoder not setting colorUIButton 子类 initWithCoder 中的 setTitleColor:forState 未设置颜色
【发布时间】:2013-12-26 12:54:26
【问题描述】:

我已将包含在自定义 .xib 文件中的 UIButton 子类化,并且我正在尝试通过 initWithCoder 方法为每个状态设置按钮的标题颜色。目前,我有这个:

-(id)initWithCoder:(NSCoder *)aDecoder {
  self = [super initWithCoder:aDecoder];
  if(self) {
    self.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
    [self setTitleColor:[UIColor navigationLabelColor] forState:UIControlStateNormal];
  }
  return self;
}

但是,标题颜色没有改变,但边缘插图改变了。我做错了吗?

PS:我应该补充一点,自定义 xib 用于不同的元素,但该 xib 中有多个此按钮的实例。

【问题讨论】:

  • 你尝试过其他颜色吗?
  • 感谢您的回复 - 是的,我做到了。 [UIColor greenColor] 没有任何区别。
  • 许多开发人员会同意不要将 UIButton 子类化,因为它非常复杂,因此您可以尝试其他选项
  • @Retro UIButton 的成功子类化取决于您的需求,它并不总是不合适的。
  • @Zaph 是的,我同意 :) 谢谢 +1

标签: ios objective-c uibutton xcode5


【解决方案1】:

子类化 UIButton 并不简单,因为 UIButtonType 似乎默认为 UIButtonTypeCustom 用于简单的子类化。更改框架/边界似乎可以正常工作,但其他一些方面则不行。

就我个人而言,我已经成功地为我的需要进行了子类化,使用了UIButtonTypeCustom 并主要添加了背景图像拉伸。

您需要找到另一种方法来满足您的需求或深入研究 UIButton 的子类化。

由于对 UIButton 的子类化进行搜索,您会发现大量信息,包括 cmets 说基本上不这样做。看到这个SO answer

【讨论】:

  • 嗨 Zaph,感谢您的回复,很抱歉花了这么长时间才回复您。我遇到的问题是标题是一个属性字符串,因此要更改属性字符串的属性,您必须调用:setAttributedTitle:forState:。不过还是谢谢。
猜你喜欢
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
相关资源
最近更新 更多