[英]Resizing image to fit UIImageView
我对目标c还是很陌生,但我的目标才刚刚开始。 我想做一些非常简单的事情,但是事实证明这是一个很大的挑战:
我正在尝试将图像显示到UIImageView
。 我显示的图像很大,我希望将其缩小以适合UIImageView
。 我尝试设置AspectFit
View模式,但是图像显示为原始大小,并被UIImageView
裁剪。 我的代码如下:
- (void)changeImages
{
UIImage* img11 = nil;
img11 = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"jpeg"]];
u11.contentMode = UIViewContentModeScaleAspectFit;
u11.image = img11;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self changeImages];
}
谁能对此有所启发?
谢谢!
嗨,我会尝试这个...
- (void)changeImages
{
UIImage *img11 = [UIImage imageNamed@"dog.jpeg"];
u11.contentMode = UIViewContentModeScaleAspectFit;
u11.clipsToBounds = YES;
[u11 setImage:img11];
}
- (void)viewWillAppear:animated
{
[super viewWillAppear:animated];
[self changeImages];
}
这将缩放图像(向上或向下),使其适合imageView内。 不需要clipsToBounds,但可以阻止图像显示在imageView框架之外。
HTH。
添加到您的UIViewController.m:
-(UIImage *)resizeImage:(UIImage *)image imageSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
// here is the scaled image which has been changed to the size specified
UIGraphicsEndImageContext();
return newImage;
}
使用方法:
UIImage *image = [UIImage imageNamed:@"image.png"];
CGSize size = CGSizeMake(50, 63); // set the width and height
UIImage *resizedImage = [self resizeImage:image imageSize:size];
希望对您有所帮助。
CGSize size=CGSizeMake(79, 84);//set the width and height
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext();
//here is the scaled image which has been changed to the size specified
UIGraphicsEndImageContext();
这可以肯定地工作,并且不要忘记导入QuartzCore FrameWork。
祝您编码愉快(^ _ ^)....
您还可以在Interface Builder中的“属性”检查器中将View:Mode设置为Aspect Fit。
我做了以下工作,它帮助将模式从默认值“缩放为填充”更改为“纵横比填充”
并添加一行代码,如下所示(我在单元格配置中做到了):
cell.photo.clipsToBounds = true
我知道这很老了,但我想根据Stanford 193p 2017讲座11(约18:45)和所有想迅速搜寻的人添加一个回复,因为这是第一个显示给我的搜索结果。
基本上,继承UIView并使它看起来像:
class U11: UIView {
var myImage: UIImage? { didSet { setNeedsDisplay() }}
override func draw(_ rect: CGRect) {
myImage?.draw(in: bounds)
}
}
然后使用以下方法设置图像:
func changeImage() {
if let img11 = UIImage(named: "dog.jpeg"){
u11.myImage = img11
}
}
这非常简单,图像占据了视图边界内的整个空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.