2

在目标 C 中,可以将背景图像设置为拉伸的 png,如下所示:

button = [[UIButton alloc] initWithFrame:CGRectMake(10, 0, 300, 44)];
[button setTitle: @"Tap me" forState: UIControlStateNormal];
[button setBackgroundImage:[[UIImage imageNamed: @"greenButton.png"]
                                 stretchableImageWithLeftCapWidth:8.0f
                                 topCapHeight:0.0f]
                       forState:UIControlStateNormal];

尝试将其转换为 Ruby,但我不断收到异常。问题在于 UIImage 实例上调用的两个方法:stretchableImageWithLeftCapWidthtopCapHeight

我尝试了以下方法无济于事:

greenImage = UIImage.imageNamed("greenButton.png")
greenImage.stretchableImageWithLeftCapWidth = 8.0
greenImage.topCapHeight = 0.0
@timerButton.setBackgroundImage(greenImage, forState: UIControlStateNormal)

任何人都可以建议吗?

4

1 回答 1

5

您错误地破坏了该方法选择器

它被声明为

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight

应该这样称呼

greenImage.stretchableImageWithLeftCapWidth(8.0, topCapHeight:0.0)

您很可能希望将其分配给某些东西,因此它可能看起来像这样

greenImage = UIImage.imageNamed("greenButton.png")
greenImage = greenImage.stretchableImageWithLeftCapWidth(8.0, topCapHeight:0.0)
@timerButton.setBackgroundImage(greenImage, forState: UIControlStateNormal)

边注

您是对的,该方法在 iOS 5 中被标记为新弃用,但同样重要的是要注意替换方法也在 iOS 5 中引入,因此如果您计划支持旧 iOS,那么您将需要继续使用它。

于 2012-05-10T19:35:43.490 回答