UIImageView发现多少是超出界限的

时间:2013-05-09 14:32:30

标签: ios uiscrollview uiimageview bounds sdwebimage

我使用以下方法在UIImageView中缩放图像:UIViewContentModeScaleAspectFill

图像很好地缩放但我的问题是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)位置。

1 个答案:

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

在图像视图中获得图像的大小,您可以计算出图像的多少超出范围。