0

ライブラリから選択した画像を表示している画像ビューがあります。高品質の画像を表示するために、以下の方法を使用して画像を再スケーリングしました。私が得ている画質は完璧ですが、新しく作成した画像のサイズに応じて imageView フレームを設定する必要があります。しかし、 newImage.size.width を使用すると、元の画像ビューの幅が得られます。表示された画像サイズに応じて画像ビューフレームを設定するのを手伝ってください。前もって感謝します

-(UIImage *)scaleImage:(UIImage *)img toRectSize:(CGRect)screenRect
{
    UIGraphicsBeginImageContext(screenRect.size);
    float hfactor = img.size.width / screenRect.size.width;
    float vfactor = img.size.height / screenRect.size.height;

    float factor = MAX(hfactor, vfactor);

    float newWidth = img.size.width / factor;
    float newHeight = img.size.height / factor;

    float leftOffset = (screenRect.size.width - newWidth) / 2;
    float topOffset = (screenRect.size.height - newHeight) / 2;

    CGRect newRect = CGRectMake(leftOffset, topOffset, newWidth, newHeight);
    [img drawInRect:newRect blendMode:kCGBlendModePlusDarker alpha:1];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}
4

3 に答える 3

0

自動レイアウトを使用していますか? はいの場合、フレームではなく画像ビューの幅と高さの制約を変更する必要があります (他のコントロールと同じ方法でそれらのアウトレットを作成できます)。

自動レイアウトの場合、viewDidAppear メソッドでフレームを変更できます (viewWillAppear または viewWillLoad では機能しない場合があります。

于 2013-09-10T10:28:42.890 に答える