繁体   English   中英

调整图像大小以适合UIImageView

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM