1

グラデーションレイヤーでボタンを作成しました:

//MyGradient creates and returns gradient layers
CAGradientLayer *gradient = [MyGradient blueGradient];

//MyButton is a subclassed UIButton which adds some attributes
MyButton *testButton = [MyButton buttonWithType:UIButtonTypeCustom];
testButton.frame = CGRectMake(10, 10, 150, 50);
[testButton addTarget:self action:@selector(testButton:) forControlEvents:UIControlEventTouchUpInside];

[gradient setFrame:testButton.bounds];

testButton.clipsToBounds = YES;
[testButton.layer insertSublayer:gradient atIndex:0];    

[self.view addSubview:testButton];

押されたときに画像を強調表示するにはどうすればよいですか? UIButton をサブクラス化し、drawRect: メソッドをオーバーライドするサンプル コードをいくつか見つけました。ボタンを強調表示する簡単な方法はありますか?

4

3 に答える 3

1

ボタンには画像がないため、強調表示するものはありません。

ボタンの背景として画像(必要に応じてグラデーション画像)を設定します...UIControlStateHighlightedの画像を設定しなくても、ボタンは「ハイライト」されます。基本的に、iOSは色を反転します。

また、水平方向/垂直方向のグラデーションのみが必要な場合は、この関数をチェックアウトすることをお勧めします:resizableImageWithCapInsets

楽しむ !

于 2012-05-21T16:26:19.073 に答える
0

それを行う組み込みの方法はありません。UIButton をオーバーロードしdrawRect、ボタンの状態に基づいて自分でグラデーションを描画するか、2 つの状態に対して 2 つのグラデーション イメージを作成してsetBackgroundImage:image forState:UIControlStateNormal/を使用しますUIControlStateHighlighted

于 2012-05-21T16:05:58.177 に答える
0

最も簡単な方法は、グラデーションを画像ファイル (できればサイズ変更可能) に置き、次のようなコードを使用することです。

[testButton setImage:normalStateImage forState:UIControlStateNormal];
[testButton setImage:highlightStateImage forState:UIControlStateHighlighted];
于 2012-05-21T16:07:47.523 に答える