我使用以下方法在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)位置。
答案 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;
}
在图像视图中获得图像的大小,您可以计算出图像的多少超出范围。