在 objective-c 中,可以将背景图像设置为拉伸(stretch)的 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 实例上调用的两个方法:stretchableImageWithLeftCapWidth 和 topCapHeight。
我尝试了以下方法,但没有成功:
greenImage = UIImage.imageNamed("greenButton.png")
greenImage.stretchableImageWithLeftCapWidth = 8.0
greenImage.topCapHeight = 0.0
@timerButton.setBackgroundImage(greenImage, forState: UIControlStateNormal)
谁能给点建议吗?
最佳答案
您错误地破坏了该方法选择器
它被声明为
- (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,则需要继续使用此方法。
关于ruby - 如何将这个 Objective C 重写为 RubyMotion?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10540770/