我有一個UIImageView與內容模式方面適合大小爲220x155。我以不同的分辨率動態插入不同的圖像,但都大於UIImageView的大小。當內容模式設置爲Aspect Fit時,圖像將根據比例進行縮放以適合UIImageView。如何在頂部設置圖像以避免空間在UIimageView
我的問題是,如果例如UIImageView內的圖像縮放到220x100,我想UIImageView從155的高度縮小到100,以避免我的元素之間的空間。
我該怎麼做?
我有一個UIImageView與內容模式方面適合大小爲220x155。我以不同的分辨率動態插入不同的圖像,但都大於UIImageView的大小。當內容模式設置爲Aspect Fit時,圖像將根據比例進行縮放以適合UIImageView。如何在頂部設置圖像以避免空間在UIimageView
我的問題是,如果例如UIImageView內的圖像縮放到220x100,我想UIImageView從155的高度縮小到100,以避免我的元素之間的空間。
我該怎麼做?
我寫了這個方法來獲取圖像視圖的框架,一旦它加載圖像。 所以,對我的要求是一樣的,你的情況:
1)方面的圖像視圖適合內容模式 2)獲得圖像的準確的幀(這樣你就可以重新定位圖像視圖)
希望這有助於:
- (CGRect) getFrameOfImage:(AsyncImageView *) imgView
{
if(!imgView.loaded)
return CGRectZero;
CGSize imgSize = imgView.image.size;
CGSize frameSize = imgView.frame.size;
CGRect resultFrame;
if(imgSize.width < frameSize.width && imgSize.height < frameSize.height)
{
resultFrame.size = imgSize;
}
else
{
float widthRatio = imgSize.width/frameSize.width;
float heightRatio = imgSize.height/frameSize.height;
float maxRatio = MAX (widthRatio , heightRatio);
NSLog(@"widthRatio = %.2f , heightRatio = %.2f , maxRatio = %.2f" , widthRatio , heightRatio , maxRatio);
resultFrame.size = CGSizeMake(imgSize.width/maxRatio, imgSize.height/maxRatio);
}
resultFrame.origin = CGPointMake(imgView.center.x - resultFrame.size.width/2 , imgView.center.y - resultFrame.size.height/2);
return resultFrame;
}
我在這裏使用AsyncImageView
,但它的作用與UIImageView
好。要記住的重要一點是在圖像加載後調用此方法。
乾杯!
將imageview的圖像設置爲新圖像(並縮放)後,可以在imageview(imageview.image.size.height)中獲取圖像的高度,並相應地設置imageview的高度(frame)。
此外,您應該在layoutSubviews方法中設置您的視圖,並在動態調整imageview的高度後調用[self setNeedsLayout] – user1264577
它非常簡單,你只需要獲得圖像的實際大小,這可以通過
UIImage *image = [UIImage imageName:@""];
,那麼你只需要設置框架 像這樣做: -
imageView.frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
希望這有助於您。
謝謝,但這不會幫助我,因爲圖像很大,我已將屬性設置爲方面適合,尺寸太大 – Hiren
您可以將一個尺寸修復作爲常量並進行比較,如果超過該尺寸,那麼您應該縮小尺寸並使尺寸與該修正尺寸相同。希望它可以幫助你.. –
非常感謝@George。這是非常好的答案,我已經將resultframe的y更改爲靜態文本。 – Hiren