[英]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.