web-dev-qa-db-ja.com

Retinaディスプレイと[UIImage initWithData]

IPhoneクライアントのタイプに基づいて正しいサイズの画像を配信するサーバーからダウンロードされた生データから画像を初期化する必要があります。

640x960ディスプレイでスケール値を2.0に設定する必要があることはわかっていますが、これは読み取り専用のプロパティであり、initWithDataを使用する場合、init中に設定できません。

何か案は?

50
Sam

@ 2x画像であることを電話に伝えるために画像データ自体に埋め込むことができるものは何も知りませんが、次のようなものが機能するはずです。

UIImage * img = ...;
img = [UIImage imageWithCGImage:img.CGImage scale:2 orientation:img.imageOrientation];
93
tc.

IOS 6.0 UIImageにはメソッド+ imageWithData:scale:があるため、2.0を網膜のスケールとして渡すことができます。

19
Dennis Krut

[[UIScreen mainScreen] scale]の代わりにスケールパラメータとして2.0f

7
Phil Loden

Swift3、4バージョン

let image = UIImage(data: imageData, scale: UIScreen.main.scale)
0
allen huang