0

青色のグラデーション画像があります。100px (高さ) x 1px (幅) です。今、強調表示された状態の背景画像として使用しようとしています。しかし、どういうわけか、実行時にオレンジ色に変わります。ここで何が問題なのですか?ボタンの高さが40pxなのでリサイズしてから設定しています

UIImage *image = [UIImage imageNamed:@"pressed.png"];
UIImage *stretchedImage = [[UIImage imageWithImage:image scaledToSize:frame.size] stretchableImageWithLeftCapWidth:0 topCapHeight:0];
[button setBackgroundImage:stretchedImage forState:UIControlStateHighlighted];
4

1 に答える 1

1

考えられる説明はいくつかありますが、大まかに可能性の高い順に並べると、次のようになります。

1) scaledToSize カテゴリ コードにはバグがあり、画像内のバイトの RGB 順序が逆になり、青がオレンジに変わります。画像を拡大縮小せずに、正しい色かどうかを確認してください。とにかく、実際にスケーリングする必要はありません。ボタンの背景画像は、実行時に収まるように既に引き伸ばされています。

2) プロジェクトには 2 つの pressed.png 画像があり、おそらく異なるフォルダーにあるので気付いていませんが、コンパイラーはビルド時にすべての画像を同じフォルダーにダンプするため、青色の press.png はオレンジの押された.png. ディスク上のプロジェクトを検索して、これに該当するかどうかを確認してください。

3) 以前は、pressed.png というオレンジ色のイメージがあり、アプリをビルドすると、キャッシュの問題により古いイメージが使用されます。クリーン ビルドを試し、シミュレーターをリセットし、デバイスからアプリを削除します。

4) オレンジ色のイメージの press@2x.png バージョンがあります。デバイスで実行すると、Retina バージョンを使用しているため、見た目が異なります。

5) PNG が何らかの理由で破損しています。削除して、最初から作成し直してください。幅が 1 ピクセルしかない画像でこれまで問題があったので、その場合は幅を広げてみてください。

于 2012-04-16T12:46:48.437 に答える