创建自定义UIButton

时间:2010-04-25 11:11:00

标签: cocoa-touch uikit uibutton

我希望以编程方式创建一个自定义UIButton(而不是子类),我希望它有一个背景图像,随着UIButton宽度的增加而拉伸。我该怎么做?

4 个答案:

答案 0 :(得分:15)

首先创建一个可伸缩的UIImage(假设按钮图像末尾的“上限”为10px):

UIImage *backgroundImage = [[UIImage imageNamed:@"ImageBackground.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0];

然后使用可伸缩图像作为背景:

[myButton setBackgroundImage:backgroundImage forState:UIControlStateNormal];

当您在UIButton上为UIControlStateNormal设置backgroundImage时,它将作为所有状态的背景,除非您为其他任何状态明确设置不同的backgroundImage的状态。

答案 1 :(得分:1)

更好的是,使用UIView的contentStretch属性。否则,如果使用stretchableImageWithLeftCapWidth缩小图形或使用光照或光泽效果拉伸复杂图形,您可能会遇到一些令人讨厌的惊喜。

答案 2 :(得分:0)

嗯,UIView的contentStretch属性是正确的解决方案,但遗憾的是它不适用于UIButton后台属性(至少是XCode 4.0.2)。它甚至在IB中暴露,因此您不需要任何代码。

答案 3 :(得分:-4)

您必须使用“stretchableImageWithLeftCapWidth:topCapHeight:” - 方法作为按钮背景设置创建的UIImage。例如:

UIImage *yourBackgroundImage = [[UIImage imageNamed:@"yourImage.png"] stretchableImageWithLeftCapWidth:1 topCapHeight:1];
yourButton.backgroundColor = [UIColor colorWithPatternImage:yourBackgroundImage];