Ios UIImageView:是否将大小更改为图像大小?

Ios UIImageView:是否将大小更改为图像大小?,ios,uiimageview,Ios,Uiimageview,我有一个UIImageView,内容模式方面适合220x155大小。我以不同的分辨率动态插入不同的图像,但都大于UIImageView的大小。当内容模式设置为Aspect Fit时,图像将根据适合UIImageView的比率进行缩放 我的问题是,例如,如果UIImageView中的图像缩放到220x100,我希望UIImageView也从155高度收缩到100高度,以避免元素之间的空间 如何执行此操作?上次编辑: 我似乎误解了这个问题 要获得实际尺寸,您可以尝试: CGSize imageSiz

我有一个
UIImageView
,内容模式方面适合220x155大小。我以不同的分辨率动态插入不同的图像,但都大于UIImageView的大小。当内容模式设置为Aspect Fit时,图像将根据适合UIImageView的比率进行缩放

我的问题是,例如,如果UIImageView中的图像缩放到220x100,我希望UIImageView也从155高度收缩到100高度,以避免元素之间的空间

如何执行此操作?

上次编辑:

我似乎误解了这个问题

要获得实际尺寸,您可以尝试:

CGSize imageSize = img.size;
CGSize viewSize = imageView.frame.size;
CGSize actualSize;

if (imageSize.width > imageSize.height) {
    actualSize.width = imageSize.width > viewSize.width ? viewSize.width : imageSize.width;

    actualSize.height = imageSize.height * actualSize.width / imageSize.width;
}
else {
    actualSize.height = imageSize.height > viewSize.height ? viewSize.height : imageSize.height;

    actualSize.width = imageSize.width * actualSize.height / imageSize.height;
}

如果我没弄错的话,应该是这样的:通过以下方式获得图像大小:

UIImage * img = [UIImage imageNamed:@"someImage.png"];
CGSize imgSize = img.size;
计算宽度上的比例

float ratio=yourImageView.frame.size.width/imgSize.width;
检查缩放高度(使用相同比率保持纵横比)

float scaledHeight=imgSize.height*比率;
if(缩放高度
根据Michael的回答,这里有一个完整的方法

+ (CGSize)makeSize:(CGSize)originalSize fitInSize:(CGSize)boxSize
{
    float widthScale = 0;
    float heightScale = 0;

    widthScale = boxSize.width/originalSize.width;
    heightScale = boxSize.height/originalSize.height;

    float scale = MIN(widthScale, heightScale);

    CGSize newSize = CGSizeMake(originalSize.width * scale, originalSize.height * scale);

    return newSize;
}

编辑Steven Stefanik的答案:当originalSize为{0,0}时,此方法会中断。也许考虑一下这些变化

-(CGSize)makeSize:(CGSize)originalSize fitInSize:(CGSize)boxSize
{
    if (originalSize.height == 0) {
        originalSize.height = boxSize.height;
    }
    if (originalSize.width == 0) {
        originalSize.width = boxSize.width;
    }

    float widthScale = 0;
    float heightScale = 0;

    widthScale = boxSize.width/originalSize.width;
    heightScale = boxSize.height/originalSize.height;

    float scale = MIN(widthScale, heightScale);

    CGSize newSize = CGSizeMake(originalSize.width * scale, originalSize.height * scale);

    return newSize;
}

那不行。假设我的图像是440x200。将此图像插入my ImageView时,其大小将更改为220x100以适合UIImageView。您的代码将UIImageView的高度设置为200,而我希望在UIImageView缩放图像后知道图像的高度。您可以始终检查高度,只有在图像高度小于当前图像的最大高度时才应用此设置,然后才应用此更改。抱歉,但我不确定你是否理解我的问题。您的代码会将UIImageView的大小更改为我的图像的大小——这不是我想要的。我想我的形象,以适应我的220x115盒。但是,当图像的比率与我的220x115框的比率不同时,有时会比更高的更宽,这会在UIImageView的顶部和底部产生空白。为了避免这种情况,我想将UIImageView的高度缩小到它将图像缩小到的高度。对不起,我终于缩小了。imageView或其内部的图像似乎都没有反映当前使用的比例因子。你必须通过检查图像大小和视图大小来找到它。我有一个相同的问题,图像设置在中间,但在上下两侧都有空间。我如何解决它?请帮帮我,我帮了大忙。谢谢
-(CGSize)makeSize:(CGSize)originalSize fitInSize:(CGSize)boxSize
{
    if (originalSize.height == 0) {
        originalSize.height = boxSize.height;
    }
    if (originalSize.width == 0) {
        originalSize.width = boxSize.width;
    }

    float widthScale = 0;
    float heightScale = 0;

    widthScale = boxSize.width/originalSize.width;
    heightScale = boxSize.height/originalSize.height;

    float scale = MIN(widthScale, heightScale);

    CGSize newSize = CGSizeMake(originalSize.width * scale, originalSize.height * scale);

    return newSize;
}