3

480x331 で背景が透明な画像があります。透明な部分は画像の端のあたりです。私の UIButton は 72x37 です。IB でボタンの背景画像として画像を設定すると、画像の透明なエッジがボタンで白く表示されます。画像がない場合、ボタンは白で角が丸くなっています。それが私が見ている白だと思います。その場合、画像の透明度は機能していますが、ボタンの白い領域が透けて見えていることを意味します。

画像を UIButton の Image プロパティに設定すると、表示モードを変更した後でも正しく拡大縮小されず、フル サイズのままになります。

スケーリングと透明度を正しく機能させるために使用する必要があるプロパティに関する提案はありますか?

4

2 に答える 2

6

@Christopher Fairbaim は、UIButtonTypeCustom の使用を提案する権利があります。UIButtonTypeRoundedRect を使用すると、透明な領域に白い背景が表示されます。

ただし、Interface Builder での接続には制限があります。UIView、UIButton、およびアセットをデータ セットから、またはユーザー入力に基づいて動的に生成する場合は、プログラムで行う方法が適しています。

ボタンを作成するには: (注: これは他の UIButtonTypes でも​​機能しますが、この特定の透明度の例では UIButtonTypeCustom を使用しました。)

UIButton *btnName = [UIButton buttonWithType:UIButtonTypeCustom];

必要なプロパティを変更するには:

btnName.backgroundColor = [UIColor clearColor];
btnName.frame = CGRectMake(100, 100, 72, 37);  //(X coord, Y coord, width, height)
[btnName addTarget:myActionClassName action:@selector(myActionName) forControlEvents:UIControlEventTouchUpInside];

さまざまな状態の画像を追加するには (これらは透明な .png であると仮定します):

UIImage *btnNameImageNormal = [UIImage imageNamed:@"btnNameNormal.png"];
[btnName setBackgroundImage:btnMenuImageNormal forState:UIControlStateNormal];
UIImage *btnNameImagePressed = [UIImage imageNamed:@"btnNamePressed.png"];
[btnName setBackgroundImage:btnNameImagePressed forState:UIControlStateHighlighted];

ビューにボタンを追加するには (viewController クラス内から):

[self addSubview:btnName];

(私のプロジェクトの 1 つからコピーして貼り付け、命名を一般化しようとしたため、タイプミスを許してください。)

于 2011-04-11T10:59:00.320 に答える