5

UIImageiPhone 4/4S/5 画面にピクセル単位で表示したいということがあります。まったく拡大縮小されていないことが重要ですが、 を使用しようとsetImageすると、画像が大きくなりすぎます。

UIImageViewUIStoryboard(私はこれに本当に慣れていないので)で作成され、他のすべてのデフォルトで「再描画」モードに設定されています。他のモードはどれもUIImage適切にスケーリングしていません (編集: つまり、UIImageViewscontentMode を他のものに設定しても機能しません)。

私は周りを見回して、これを見つけました:

[self.imageView setImage: image];
self.imageView.frame = CGRectMake(self.imageView.frame.origin.x, 
                                  self.imageView.frame.origin.y,
                                  image.size.width, 
                                  image.size.height);

これは機能しません。各次元を半分にしてみましたが、まだオフです。

更新: 私が使用している Retina iPhone 4 と非 Retina シミュレータ モードの両方で、画像が画面の同じ割合を使用するため、事後に Retina ディスプレイ用にスケーリングされていると思います。UIImage、UIImageView、またはプロジェクトを「網膜対応」に設定する方法はありますか?

更新 2: 各寸法を半分にして画像を小さくするとうまくいくようです。iPhone 4/4S は、2G/3G/3GS の 2 倍のピクセル数です。しかし、これはハック ソリューションのように思えます。それを行ったときに Retina ディスプレイのピクセル密度を利用しているかどうかさえわかりません。

4

5 に答える 5

1

すみません、私はどういうわけかこの質問を忘れていました!答えは別の意味でも役に立ち、私はそれらをすべて試しましたが、私が見つけた解決策は、ファイル内の拡張子の前に「@2x」を追加して、Retina ディスプレイにスケーリングせずに表示したい画像をマークする必要があることです。名前。たとえば、「foo.png」と「foo@2x.png」です。コンテンツ モードをUIViewContentModeCenter単独のようなものに変更しても機能しません。

これを行う必要があるのは、iOS が UIImageView の非網膜画像を領域の 4 倍に拡大して、網膜デバイスと非網膜デバイスで同じように表示されるようにするためです。拡大せずにすべてのピクセルを利用する場合は、ファイル名に「@2x」を付けて指定する必要があります。これにより、Retina デバイスにのみその画像が使用されます。

于 2014-07-15T16:29:42.977 に答える
0
[self.imageView setContentMode:UIViewContentModeScaleAspectFit];

これにより、画像が拡大縮小されることはありません。

于 2013-05-28T03:25:18.340 に答える
0

コードを正しく使用している

[self.imageView setImage: image];
self.imageView.frame = CGRectMake(self.imageView.frame.origin.x,     self.imageView.frame.origin.y,
                         image.size.width, image.size.height);

ただし、そのコンテンツモードをに設定する必要があります

[self.imageview setContentMode:UIViewContentModeScaleToFill];

これで、この UIViewContentModeScaleToFill は UIimage ビューを画像で埋めます。uiimageview のサイズを Image と同じに設定したため、画像が歪んで表示されます。

これがあなたを助けることを願っています

于 2014-07-15T10:26:14.430 に答える