4

サイズ220x155のコンテンツモードアスペクトフィットのUIImageViewがあります。さまざまな解像度でさまざまな画像を動的に挿入していますが、すべてUIImageViewのサイズよりも大きくなっています。コンテンツモードがアスペクトフィットに設定されているため、画像はUIImageViewに合うように比率に応じて拡大縮小されます。

私の問題は、たとえばUIImageView内の画像が220x100に拡大縮小された場合、要素間のスペースを避けるためにUIImageViewも155から100の高さに縮小したいということです。

これどうやってするの?

4

3 に答える 3

2

このメソッドは、画像が読み込まれたときに画像ビューのフレームを取得するために作成しました。だから、私のための要件はあなたの場合と同じでした:

1)アスペクトフィットコンテンツモードの画像ビュー2)画像の正確なフレームを取得します(この方法で画像ビューの位置を変更できます)

お役に立てれば:

- (CGRect) getFrameOfImage:(AsyncImageView *) imgView
{
    if(!imgView.loaded)
        return CGRectZero;

    CGSize imgSize      = imgView.image.size;
    CGSize frameSize    = imgView.frame.size;

    CGRect resultFrame;

    if(imgSize.width < frameSize.width && imgSize.height < frameSize.height)
    {
        resultFrame.size    = imgSize;
    }
    else
    {
        float widthRatio  = imgSize.width  / frameSize.width;
        float heightRatio = imgSize.height / frameSize.height;

        float maxRatio = MAX (widthRatio , heightRatio);
        NSLog(@"widthRatio = %.2f , heightRatio = %.2f , maxRatio = %.2f" , widthRatio , heightRatio , maxRatio);

        resultFrame.size = CGSizeMake(imgSize.width / maxRatio, imgSize.height / maxRatio);
    }

    resultFrame.origin  = CGPointMake(imgView.center.x - resultFrame.size.width/2 , imgView.center.y - resultFrame.size.height/2);

    return resultFrame;
}

ここで使用していますAsyncImageViewが、と同じように機能しUIImageViewます。覚えておくべき重要なことは、画像がロードされた後にこのメソッドを呼び出すことです。

乾杯!

于 2012-10-05T10:06:59.407 に答える
1

その非常に単純な、あなたはただ画像の実際のサイズを取得する必要があります、それはによって行うことができます

UIImage *image = [UIImage imageName:@""];

次に、フレームを次のように設定する必要があります:-

imageView.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);

これがお役に立てば幸いです。

于 2012-10-03T15:50:55.013 に答える
0

imageviewの画像が新しい画像に設定されると(したがって拡大縮小されると)、imageview内の画像の高さ(imageview.image.size.height)を取得し、それに応じてimageviewの高さ(フレーム)を設定できます。

于 2012-10-03T15:20:58.740 に答える