我正在开发 iphone 应用程序,用户可以通过在其中添加文本来添加自定义照片。现在我需要在 iOS7 中将这张照片转换为 5" 高 x 4.5" 宽。
我正在拍摄如下视图的屏幕截图,以组合添加到其中的照片和标签,如下所示
-(UIImage*)customizedImageMain
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
UIGraphicsBeginImageContextWithOptions(self.containerView.bounds.size, NO, [UIScreen mainScreen].scale);
else
UIGraphicsBeginImageContext(self.containerView.bounds.size);
[self.containerView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return finalImage;
}
我用 4" 屏幕检查了来自 iPod touch 的图像。我从上面的代码中得到的图像尺寸接近 4.445" 宽度和 7.889" 高度。
现在,无论应用程序在哪个设备上运行,我如何将这个图像调整为精确的 5" 高度和 4.5" 宽度?
提前致谢。
根据 Vin 的解决方案更新代码
-(UIImage*)customizedImageFirst
{
// We want 5" * 4.5" image which can be represented as 1630 * 1458
// 1630 pixels = 5 inch * (326 pixels / 1 inch)
// 1458 pixels = 4.5 inch * (326 pixels / 1 inch) in terms of pixels.
CGSize requiredImageSize = CGSizeMake(1458.0,1630.0);
UIGraphicsBeginImageContext(requiredImageSize);
[self.containerView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();
[combinedImage drawInRect:CGRectMake(0,0,requiredImageSize.width,requiredImageSize.height)];
UIImage* finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return finalImage;
}
使用上面的代码我得到了这个结果
现在,如果我使用代码而不考虑添加到自定义的 UILabel,如下所示
-(UIImage*)customizedImageSecond // If I use your code
{
// We want 5" * 4.5" image which can be represented as 1630 * 1458
// 1630 pixels = 5 inch * (326 pixels / 1 inch)
// 1458 pixels = 4.5 inch * (326 pixels / 1 inch) in terms of pixels.
CGSize requiredImageSize = CGSizeMake(1458.0,1630.0);
UIGraphicsBeginImageContext(requiredImageSize);
[self.myImageView.image drawInRect:CGRectMake(0,0,requiredImageSize.width,requiredImageSize.height)];
UIImage* finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return finalImage;
}
,然后我得到这张图片
我的 UI 层次结构
UIViewController 的主视图。我在主视图中添加了另一个 UIView (containerView)。在这个 containerView 中,我添加了我的 UIImageView 和 UILabels。因此,获取带有标签的自定义图像,我正在截取 containerView 的屏幕截图。