如何按比例缩放UIImageView?

青春壹個敷衍的年華 提交于 2020-03-07 12:02:10

我有一个UIImageView,目标是通过给它一个高度或宽度按比例缩小它。

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://farm4.static.flickr.com/3092/2915896504_a88b69c9de.jpg"]]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

//Add image view
[self.view addSubview:imageView];   

//set contentMode to scale aspect to fit
imageView.contentMode = UIViewContentModeScaleAspectFit;

//change width of frame
CGRect frame = imageView.frame;
frame.size.width = 100;
imageView.frame = frame;

图像确实调整了大小但位置不在左上角。 缩放image / imageView的最佳方法是什么?如何更正位置?


#1楼

imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.clipsToBounds = YES;

#2楼

我已经看过一些关于比例类型的讨论,所以我决定整理一篇关于一些最流行的内容模式缩放类型的文章

相关图片如下:


#3楼

我想你可以做点什么

image.center = [[imageView window] center];

#4楼

您可以尝试使imageView大小与image匹配。 以下代码未经过测试。

CGSize kMaxImageViewSize = {.width = 100, .height = 100};
CGSize imageSize = image.size;
CGFloat aspectRatio = imageSize.width / imageSize.height;
CGRect frame = imageView.frame;
if (kMaxImageViewSize.width / aspectRatio <= kMaxImageViewSize.height) 
{
    frame.size.width = kMaxImageViewSize.width;
    frame.size.height = frame.size.width / aspectRatio;
} 
else 
{
    frame.size.height = kMaxImageViewSize.height;
    frame.size.width = frame.size.height * aspectRatio;
}
imageView.frame = frame;

#5楼

以下是如何轻松扩展它的方法。

这适用于模拟器和iPhone的2.x.

UIImage *thumbnail = [originalImage _imageScaledToSize:CGSizeMake(40.0, 40.0) interpolationQuality:1];
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!