作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 IOS 中,如何将矩形图像裁剪为方形信箱,使其保持原始纵横比,其余空间用黑色填充。例如。 transloadit 用来裁剪/调整图像大小的“pad”策略。
最佳答案
对于任何偶然发现这个问题和更多类似问题但没有明确答案的人,我已经编写了一个简洁的小类别,它通过直接修改 UIImage
而不是仅仅修改来在模型级别完成此任务风景。只需使用此方法,无论哪边较长,返回的图像都会被信箱化为正方形。
- (UIImage *) letterboxedImageIfNecessary
{
CGFloat width = self.size.width;
CGFloat height = self.size.height;
// no letterboxing needed, already a square
if(width == height)
{
return self;
}
// find the larger side
CGFloat squareSize = MAX(width,height);
UIGraphicsBeginImageContext(CGSizeMake(squareSize, squareSize));
// draw black background
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 1.0);
CGContextFillRect(context, CGRectMake(0, 0, squareSize, squareSize));
// draw image in the middle
[self drawInRect:CGRectMake((squareSize - width) / 2, (squareSize - height) / 2, width, height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
关于ios - 如何在 iOS 中裁剪到信箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10844896/
我是一名优秀的程序员,十分优秀!