簡體   English   中英

UIImageView:將大小更改為圖像大小?

[英]UIImageView: Change size to image size?

我有一個UIImageView ,其內容模式Aspect Fit的大小為220x155。 我正在以不同的分辨率動態插入不同的圖像,但都大於UIImageView的大小。 當內容模式設置為Aspect Fit時 ,圖像將根據比例進行縮放以適合UIImageView。

我的問題是,如果例如UIImageView中的圖像縮放到220x100,我希望UIImageView也從155到100的高度縮小,以避免我的元素之間的空間。

我怎樣才能做到這一點?

如果我找對你,那將是這樣的:通過以下方式獲取圖像大小:

UIImage * img = [UIImage imageNamed:@"someImage.png"];
CGSize imgSize = img.size;

計算寬度的比例

float ratio=yourImageView.frame.size.width/imgSize.width;

檢查縮放高度(使用相同比例保持方面)

float scaledHeight=imgSize.height*ratio;
if(scaledHeight < yourImageView.frame.size.height)
{
   //update height of your imageView frame with scaledHeight
}

根據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;
}

最后編輯:

我似乎誤解了這個問題。

要獲得實際尺寸,您可以嘗試:

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM