5

理解できていないという問題があります。前面カメラと背面カメラから写真を撮り、それらをマージするアプリを作成しました。

アプリの名前はGroupCamです

ただし、UIButtonが最初から網膜画像として読み込まれないという問題があります。InterfaceBuilderで@2xとして設定すると、高品質で表示されますが、プログラムでリロードすると、代わりに低バージョンが表示されます。

これは、写真を撮って画面が変わるとボタンの画像が変わるが、ユーザーが戻るボタンを押すとカメラのアイコンがひどく見えるためです(低品質のバージョンが読み込まれているため)。

次の写真を確認してください。

最初の画面: カメラのフラッシュの値をチェックし、対応する画像をプログラムで「ロード」しているため、右上のボタンだけが歪んで表示されます。

最初の画面

2番目の画面: ユーザーが別の画面に移動して最初の画面に戻り、すべてのボタンが再読み込みされ、すべてが歪んで見えるようになりました。

セカンドスクリーン

なぜこうなった?

編集:

これが私が画像をロードする方法です。

[self.flashButton setImage:[UIImage imageNamed:@"flashOff"] 
                          forState:UIControlStateNormal];

インターネットのどこかで、これを行うと画像の最適なバージョンが自動的に読み込まれることを読みました。

私もこれを試しましたが、結果は同じです:

[self.takeButton setImage:[UIImage imageNamed:@"takePhoto.png"] forState:UIControlStateNormal];
4

3 に答える 3

4

まず、低解像度バージョンが実際に表示されていることを確認する価値があります。私は最近、同様の仮定に飛びつき、低解像度バージョンの画像を別のものと交換し、高解像度バージョンが実際にはまだ表示されているが、歪んでいることを確認しました。

私の実際の問題、私は設定しました

<uibutton_superview>.layer.shouldRasterize = YES;

ボタンの祖先のいずれかにこのセットがある場合は、問題である可能性があります。

于 2012-07-19T10:17:43.640 に答える
3

アプリがフロントカメラとバックカメラから写真を撮り、それらをマージする場合、デバイスには前面カメラが必要です。前面カメラを備えたすべてのiOSデバイスにはRetinaディスプレイも搭載されているため(iPad 2向けに開発していない限り、それは別の話です)、通常の画像をまったく用意する必要はないので、すべての画像を網膜画像。通常の画像がない場合、この問題はまったく発生しないはずです。バックアップコピーを作成し、通常のイメージをすべて削除してから、試してください。あなたが言ったように、UIImage imageNamed:@ "ImageName"を使用すると、画像が自動的に選択されるはずです。幸運を!

于 2012-07-19T01:50:24.077 に答える
3

画像のファイル名の大文字と小文字は、シミュレータでは重要ではありませんが、デバイスでは重要です。

すべての一貫したケースを使用してください。Image.pngとimage@2x.pngは認識され、シミュレーターでは一緒に機能しますが、デバイスでは機能しません。image.pngとimage@2x.pngを使用します。または、大文字と小文字が一致する限り、.jpgを使用することもできます。

于 2012-07-24T19:20:16.427 に答える