gpt4 book ai didi

ios - 使用 drawInRect 时 UIImage Aspect Fit?

转载 作者:IT王子 更新时间:2023-10-29 07:53:26 25 4
gpt4 key购买 nike

UIView 提供“纵横比”内容模式。但是,我已经对 UIView 进行了子类化,并且想使用 drawInRect 绘制一个 UIImage 并进行纵横比调整。有没有什么方法可以让我在不使用 UIImageView 的情况下访问该功能?

最佳答案

这方面的数学有点复杂,但幸运的是,这是我之前准备的解决方案:

- (UIImage *)imageScaledToSize:(CGSize)size
{
//create drawing context
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0f);

//draw
[self drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height)];

//capture resultant image
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}

- (UIImage *)imageScaledToFitSize:(CGSize)size
{
//calculate rect
CGFloat aspect = self.size.width / self.size.height;
if (size.width / aspect <= size.height)
{
return [self imageScaledToSize:CGSizeMake(size.width, size.width / aspect)];
}
else
{
return [self imageScaledToSize:CGSizeMake(size.height * aspect, size.height)];
}
}

第一个函数相当于“缩放以填充”,第二个(调用第一个)相当于“纵横比”。这些方法是作为 UIImage 上的一个类别编写的,因此要在另一个类中使用它们,您需要通过将图像作为第二个参数传入来调整它们(或者像我一样在 UIImage 上创建一个类别)。

关于ios - 使用 drawInRect 时 UIImage Aspect Fit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com