Iphone 覆盖-(void)setBackgroundImage:(UIImage*)图像状态:(UIControlState)nib状态

Iphone 覆盖-(void)setBackgroundImage:(UIImage*)图像状态:(UIControlState)nib状态,iphone,ios,ipad,uibutton,nib,Iphone,Ios,Ipad,Uibutton,Nib,我有一个笔尖,我添加了一个按钮和给定的背景图像。 我创建了一个子类UIButton,并将该类赋予该按钮 我想覆盖 -(void)setBackgroundImage:(UIImage*)图像状态:(UIControlState)状态 用于nib。 有什么办法吗 谢谢您可以对UIButton进行子类化,但是您在做什么时应该小心。只是将其子类化以更改其行为,而不是其外观。要修改UIButton外观,应使用为此提供的接口方法,例如: setTitle:forState: setBackgroundI

我有一个笔尖,我添加了一个按钮和给定的背景图像。
我创建了一个子类
UIButton
,并将该类赋予该按钮

我想覆盖
-(void)setBackgroundImage:(UIImage*)图像状态:(UIControlState)状态

用于nib。
有什么办法吗


谢谢

您可以对UIButton进行子类化,但是您在做什么时应该小心。只是将其子类化以更改其行为,而不是其外观。要修改UIButton外观,应使用为此提供的接口方法,例如:

setTitle:forState: 
setBackgroundImage:forState: 
setImage:forState:
更新:

-(void)changeBackground:(UIImage *)image forState:(UIControlState)state
{
   [self setBackgroundImage:image forState:state];
}

您可以对UIButton进行子类化,但是您在做什么时应该小心。只是将其子类化以更改其行为,而不是其外观。要修改UIButton外观,应使用为此提供的接口方法,例如:

setTitle:forState: 
setBackgroundImage:forState: 
setImage:forState:
更新:

-(void)changeBackground:(UIImage *)image forState:(UIControlState)state
{
   [self setBackgroundImage:image forState:state];
}

如果通过Xcode的GUI设置按钮的背景图像,它将调用默认方法,而不是自定义setBackgroundImage方法


为了调用您自己的方法,您应该在加载视图后显式调用它。

如果您通过Xcode的GUI设置按钮的背景图像,它将调用默认方法,而不是自定义的setBackgroundImage方法


为了调用自己的方法,应该在加载视图后显式调用它。

在自定义UIButton类中执行此操作。问题是什么?Puneet是正确的-它应该可以工作(如果您在NIB中正确设置了按钮的类)。根据您希望在子类方法中执行的操作,您可能仍然希望在其内部调用
[super-setBackgroundImage:forState:://code>。在我的子类setBackgroundImage中:forState在自定义UIButton类中不会被调用。问题是什么?Puneet是正确的-它应该可以工作(如果您在NIB中正确设置了按钮的类)。根据您希望在子类方法中执行的操作,您可能仍然希望在其内部调用
[super-setBackgroundImage:forState:://code>。在我的子类setBackgroundImage:forState没有被调用,但是如果我在nib中设置背景图像。setBackgroundImage:forState:函数在我的uibutton子类Krishna中没有被调用。我告诉你我的需求,我还需要支持IOS7。假设有一个按钮。对于IOS7和IOS6,它具有不同的图像。所以我想为此编写泛型类。如果我按照你说的做,那么我必须从我的代码中调用这个方法,我不希望这样。我想如果有人把图像的名字放在笔尖上。我们可以在子类中监听它,如果它是ios7,则在图像名称中添加后缀。然后您可以创建两个nib,并使用nib名称初始化customButton。使用所需的映像保存ios7和ios6的nib。。在初始化时加载它。或者通过iOS版本检查调用更新的方法…但是如果我在nib中设置背景图像。setBackgroundImage:forState:函数在我的uibutton子类Krishna中没有被调用。我告诉你我的需求,我还需要支持IOS7。假设有一个按钮。对于IOS7和IOS6,它具有不同的图像。所以我想为此编写泛型类。如果我按照你说的做,那么我必须从我的代码中调用这个方法,我不希望这样。我想如果有人把图像的名字放在笔尖上。我们可以在子类中监听它,如果它是ios7,则在图像名称中添加后缀。然后您可以创建两个nib,并使用nib名称初始化customButton。使用所需的映像保存ios7和ios6的nib。。在初始化时加载它。或者用你的iOS版本检查调用更新的方法…也许你可以用Objective-C分类,但我以前没有用过分类,所以我只能说试试。也许你可以用Objective-C分类,但我以前没有用过分类,所以我只能说试试。