2013-05-09 34 views
1

我用我的尺度範圍內UIImageView的圖像:UIViewContentModeScaleAspectFill的UIImageView找到多少是出界

圖像縮放很好,但我的問題是ImageView的坐在一個UIScrollView內,我已經設置了原點0 ,0。對於我使用的大多數圖像來說這很好,但有些圖像的高度更高,並且超出了界限。我不想修剪圖像,我想動態地將UIImageView框架在Y軸上向下移動,基於超出的範圍。

我該如何去了解Y軸/高度上的界限?請原諒糟糕的代碼示例。

NSString *ImageURL = [self.detailItem objectForKey:@"job_header"]; 

     anImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, MAX_HEIGHT, 118)]; 
     anImage.contentMode = UIViewContentModeScaleAspectFill; 
     [anImage setImageWithURL:[NSURL URLWithString:ImageURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { 
      //Adjust the frame once the image is loaded 
      [self adjustPositions]; 
     }]; 

在adjustPosition:

if (anImage.image.size.height > MAX_HEIGHT) { 
    CGRect myFrame = anImage.frame; 
    myFrame.origin.y = 100; 
    myFrame.origin.y = anImage.frame.size.height/anImage.image.size.height; 
    anImage.frame = myFrame; 
} 

我還使用:SDWebImage,這是Q是相關的,也許可以解釋我的問題更好一點:UIImageView, setClipsToBounds and how my images are losing their head

請注意,我根本不想限制邊界。我想保留邊界,並簡單地將原點移動到真正的(0,0)位置。

回答

0

這是一種可以計算圖像視圖中圖像大小的方法。 originalSize是圖像的大小和約束是圖像視圖大小。

- (CGSize) size: (CGSize) originalSize constrainedToSize: (CGSize) constraint 
{ 
    CGFloat ratioOriginal = originalSize.width/originalSize.height; 
    CGFloat ratioConstraint = constraint.width/constraint.height; 

    CGSize resultingSize = CGSizeZero; 

    if (ratioConstraint >= ratioOriginal) { 
      resultingSize = CGSizeMake(constraint.width, originalSize.height*constraint.width/originalSize.width); 
    }else{ 
      resultingSize = CGSizeMake(constraint.height*originalSize.width/originalSize.height, constraint.height); 
    } 

    return resultingSize; 
} 

在圖像視圖中擁有圖像的大小,您可以計算圖像的有多少超出邊界。

+0

關閉但沒有雪茄,我現在的問題是比預期的差距更大。所以我已經通過了resultSize.height移動了圖像幀origin.y。 我發現差距太大,所以我認爲邊界可能均勻分佈在頂部/底部。將結果除以2後,我稍微靠近一點,但圖像仍在進入頂部。 我瞄準了0,0。但顯然,圖像邊界造成困難。我想知道如果我應該放棄並使用適當的圖像縮放lib,將不會有任何越界...... – Tom 2013-05-10 00:17:07

+0

我能夠實現合理的比例調整大小,同時仍然使用SDWebImage的異步/緩存能力與以下:https://github.com/toptierlabs/ImageCacheResize 我與此唯一的問題是它使用的是舊版本,並沒有維護,但它確實有效。 – Tom 2013-05-10 05:03:36