4

私は奇妙な問題に遭遇しました。私は を持ってUIButtonUIButtonTypeCustomます。

背景画像は透過画像を使用しています。問題は、実際の画像の透明度が正しくないように見えることです。奇妙なことは、背景がボタンの後ろに正しく表示されるため、実際には透明であることです。

以下は、ボタンの外観 (左) とボタンの外観 (右) の例です。スクリーンショットを撮り、Photoshop で背景に画像を重ねると、背景が画像内に正しく表示されますが、左側の実際のボタンでは表示されません。明らかに、背景に挿入したときの実際の画像と比較して、左側の UIButton のグローがより強烈です。

UIButtonの問題

実際に透明性があることを示すために使用している画像を次に示します。

使用画像

これが私のコードです:

UIButton *nextButton = [UIButton buttonWithType:UIButtonTypeCustom];
nextButton.backgroundColor = [UIColor clearColor];
nextButton.frame = CGRectMake(0, 0, 30, 30);
[nextButton setBackgroundImage:[[UIImage imageNamed:@"ButtonBackground.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:5] forState:UIControlStateNormal];

forState:UIControlStateHighlighted]; [self addSubview:nextButton];

他の場所でまったく同じ画像を使用して描画しましたが、透明度に問題はありませんでした。

更新:他の透明な画像を追加すると、同様にアルファの強度が増加します。それらは透明ですが、より暗く見えるため、透明度が低くなります。繰り返しますが、他の場所では完璧に機能します。

更新 2:さらに悪いことに、まったく同じ画像を他のプロジェクトからドラッグして新しいプロジェクトを作成し、ボタンを作成しましたが、ボタンが正しく表示されても問題はありませんでした。信じられないほど迷惑です!

4

2 に答える 2

0

これを試して

    UIButton *nextButton = [UIButton buttonWithType:UIButtonTypeCustom];

    nextButton.frame = CGRectMake(0, 0, 30, 30);

    nextButton.alpha=0.5f;

    [nextButton setBackgroundColor:[UIColor clearColor]];

    [nextButton setOpaque:NO];

    [nextButton setBackgroundImage:[UIImage imageNamed:@"ButtonBackground.png"] 
                          forState:UIControlStateNormal];
于 2012-05-18T17:18:43.230 に答える
0

透明にするために背景色を設定する必要はありません。また、画像の伸縮可能な呼び出しを削除してみてください。

また、背景画像ではなく、画像を設定する必要があります。

それでも解決しない場合は、Apple が画像を不適切にレンダリングしている可能性があります。CALayer を作成し、その内容をイメージに設定して、それが適切に機能するかどうかを確認してください。

于 2012-05-18T17:16:46.710 に答える