在目标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实例上调用的两个方法: stretchableImageWithLeftCapWidth 和 topCapHeight 。
我尝试过以下无效:
greenImage = UIImage.imageNamed("greenButton.png")
greenImage.stretchableImageWithLeftCapWidth = 8.0
greenImage.topCapHeight = 0.0
@timerButton.setBackgroundImage(greenImage, forState: UIControlStateNormal)
有人可以提供建议吗?
答案 0 :(得分: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,那么你需要继续使用它。