扩展适用于所有UIButton的方法

时间:2014-06-13 11:39:31

标签: ios objective-c ios7 uibutton

我的程序中有一个UIButton对象。 我想像下面这样使用它

myButton.setImage:blablabla
mybutton.title:.......blabla
...
...
myButton.placeTextBelowImageWithSpacing:12

调用我的方法" placeTextBelowImageWithSpacing:12"它必须相应地设置图像和文本。我准备好了这个方法。我怎样才能以上述方式使用它。

PS:我讨厌子类化。 在此先感谢

3 个答案:

答案 0 :(得分:1)

创建UIButton的自定义子类。我创建了一个名为FinderButton的按钮,它有一个图像和一个位于其下方的标题。它很棒。

如果你讨厌子类化,那么你可能想要考虑不同的工作。

作为一名讨厌子类化的客观C程序员有点像是厌恶血液的外科医生或厌恶污垢的农民。定义类层次结构是使用Objective-C等OO语言进行开发的主要工具之一。

答案 1 :(得分:1)

您可以通过创建UIButton类别来执行此操作:

<强>的UIButton + MyCustomMethod.h

@interface UIButton (MyCustomMethod)

- (void)placeTextBelowImageWithSpacing;

@end

<强>的UIButton + MyCustomMethod.m

@implementation UIButton (MyCustomMethod)

- (void)placeTextBelowImageWithSpacing
{
    // ...
}

@end

答案 2 :(得分:0)

你不能。这在Objective-C中不是有效的语法。您可以获得的最接近的是在UIButton上显式声明遵循命名约定的新属性。然后使用它们看起来像:

myButton.setTitle = @"something"

然后你可以覆盖setTitle的setter(setSetTitle:),并调用setTitle:forControlState:,我假设是你的目标。

但是这个应该只能通过子类化来学习(学会爱它,它是OOP的重要组成部分),尽管如果你真的想要,你可以添加属性。使用Objective-C运行时objc_setAssociatedObject()函数的类别更多信息:Objective-C: Property / instance variable in category