2

Objective 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 インスタンスで呼び出される 2 つのメソッド、つまり 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 に答える