0

ブロック中にダウンロードした画像のサイズを決定するために次のようにしています。次に、それに応じて uiimageview のサイズを設定します。

self.headerView は、xib の uiimageview へのアウトレット接続です

  __weak  UIImageView *weakObj    =   self.headerView;

    [self.headerView setImageWithURLRequest:[NSMutableURLRequest requestWithURL:[NSURL URLWithString:fundraiserInfo.imageUrl]]
                           placeholderImage:nil
                                    success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
                                        NSLog(@"image is %@",NSStringFromCGSize(image.size));

                                        CGRect newFrame ;
                                        newFrame                    =   weakObj.frame;
                                        newFrame.size.width         =   image.size.width;
                                        newFrame.size.height        =   image.size.height;
                                        weakObj.frame               =   newFrame;


                                    }
                                    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
                                        ;
                                    }
     ];

ただし、シミュレーター (Device-Iphone) でアプリを実行すると、iam が取得されます。

image is {300, 222}

ただし、シミュレーター (Retina 3.5) または (Retina 4) を使用している場合、またはアプリを iphone4 または iphone 5 にインストールすると、次のようになります。

image is {150, 111}

なぜそれがそのようになるのですか。

4

2 に答える 2

1

ダウンロードしている画像は「網膜」画像として識別されないため、網膜デバイスでは実際のピクセルの半分のサイズで表示されます。ファイル名が「filenam@2x.jpg」の画像を読み込むことで画像を網膜として指定するか、作成時に UIImage の「スケール」値を 1.0 (非網膜) または 2.0 (網膜) として指定できます。

[UIImage imageWithData:scale:]
[UIImage imageWithCGImage:scale:orientation:]

スケール値を指定しない場合、画像は発見した適切な解像度であると想定されます。

于 2013-02-28T16:31:32.143 に答える
0

その理由は、iOS4 以降の UIImage サイズがピクセルではなくポイントを返すためです。Retina ディスプレイで見た結果を提供します。Apple ドキュメントから:

サイズ

向きを考慮した画像の寸法。

@property(nonatomic, readonly) CGSize サイズ

考察 iOS 4.0 以降では、この値は画像の論理サイズを反映し、ポイント単位で測定されます。iOS 3.x 以前では、この値は常にピクセル単位で測定された画像の寸法を反映しています。

于 2013-04-11T12:21:24.297 に答える