2012-05-21 51 views
1

什麼是人工繁殖手動縮放的UIImage爲的UIImageView

contentMode = UIViewContentModeScaleAspectFit;

不使用它的最佳方式?

我需要縮放一個UIImageView(在滾動視圖中)以適應縱橫比。我需要知道圖像的新大小以在其上繪製覆蓋圖。

回答

3

最近,我需要找到圖像的幀中的ImageView內,超過該圖像添加可觸摸的觀點,這是我做的:

-(void)calculateScaleAndContainerFrame{ 
    if(!imageView || !image) return; 

    CGSize imageSize = image.size; 
    CGSize imageViewSize = imageView.frame.size; 

    float imageRatio = imageSize.width/imageSize.height; 
    float viewRatio = imageViewSize.width/imageViewSize.height; 

    if(imageRatio > viewRatio){ 
     scale = imageSize.width/imageViewSize.width; 
    }else{ 
     scale = imageSize.height/imageViewSize.height; 
    } 

    CGRect frame = CGRectZero; 

    frame.size = CGSizeMake(roundf(imageSize.width/scale), roundf(imageSize.height/scale)); 
    frame.origin = CGPointMake((imageViewSize.width - frame.size.width)/2.0, (imageViewSize.height - frame.size.height)/2.0); 

    [container setFrame:frame]; 
} 

我敢肯定,你可以用它作爲指導,將imageViewSize替換爲滾動視圖(或要放置圖像的視圖)的內容大小。注意1:在我的情況下,我需要將視圖垂直居中,如果不這樣做,只需在設置框架原點的行上將y設置爲0即可。如果您不想將圖像水平居中,則對x也一樣。注意2:這不是一種代碼,你可以插入到你的項目和工作中,你可能必須閱讀它,理解它,然後將該方法應用到你自己的項目中。我現在沒有時間修改它以滿足您的需求。

注意3:通過該代碼,我設法在使用該內容模式的圖像視圖內完美地查看圖像,因此它可以正常工作。

+0

謝謝!我能夠基於此代碼創建一個CGAffineTransform。 – christo16