0

私のアプリケーションでは、2つのuiimageviewがあります。1つのimageviewには、ユーザーがフォトライブラリから選択するか、カメラから写真を撮る画像が含まれています。このimageviewのcontentmodeは、サイズが小さい場合に画像が引き伸ばされないようにアスペクトフィットです。他のimageviewがあります。その最初の画像ビューに境界線がある画像が含まれています。ユーザーが画像ビューと同じサイズの画像を選択した場合、境界線は適切な場所です。ただし、画像のサイズが小さい場合、境界線は適切に表示されません。境界線画像と選択した写真の間にギャップがあります。 image.iはそのギャップを望んでいません。どうすればこれを修正できますか?添付の画像を参照してください。ここでは、画像とフレームの間に黒いギャップは必要ありません。

4

1 に答える 1

3

この問題は、次のコードを使用して解決されました。

-(CGRect)frameForImage:(UIImage*)image inImageViewAspectFit:(UIImageView*)imageView
{
    float imageRatio = image.size.width / image.size.height;

    float viewRatio = imageView.frame.size.width / imageView.frame.size.height;

    if(imageRatio < viewRatio)
    {
        float scale = imageView.frame.size.height / image.size.height;

        float width = scale * image.size.width;

        float topLeftX = (imageView.frame.size.width - width) * 0.5;

        return CGRectMake(topLeftX, 0, width, imageView.frame.size.height);
    }
    else
    {
        float scale = imageView.frame.size.width / image.size.width;

        float height = scale * image.size.height;

        float topLeftY = (imageView.frame.size.height - height) * 0.5;

        return CGRectMake(0, topLeftY, imageView.frame.size.width, height);
    }
}
于 2012-08-27T05:06:13.347 に答える