8

UICollectionView を作成し、唯一のサブビューが UIButton である単一のセルを追加します。そのボタンには、タイトルと画像が設定されています。デバッガーで画像データが正しいことを確認しました。

ボタンが画面に描画されると、テキストと画像が表示されますが、画像は色合いで塗りつぶされているように見え、形状以外のすべての画像が見えなくなります。

これを通常のボタンとして表示するには、何が欠けていますか?

アップデート

これは UICollectionView に固有のものではなく、iOS7 のすべての UIButtons に固有のものであることが判明しました。

iOS 7 では、ボタン内のすべての画像が、画像のアルファ チャネルとティント カラーを組み合わせて使用​​するテンプレート画像として動作し、画像を生成します (タブ バー内の画像によく似ています)。UIImage に新しい renderMode プロパティがあり、これはデフォルトで「自動」に設定されており、コンテキストで決定できます (これはボタンのテンプレート スタイルです)。

これは、UIImage の新しいimageWithRenderingMode : メソッドを使用して回避できます。

UIImage* myImage = [UIImage imageNamed:@"Foo.png"];
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[button setImage:myImage forState:UIControlStateNormal];
4

2 に答える 2

0

これを回避する最も簡単な方法は、別のUIButtonType. この動作をするのUIButtonTypeSystemは IOS 7 上にあるため、代わりにカスタム ボタンを使用できます。

UIButton *button = [UIButton buttonWithType: UIButtonTypeCustom];
[button setImage:myImage forState:UIControlStateNormal];
于 2014-01-07T20:27:11.187 に答える