目标C /绘图和解决问题

时间:2013-07-31 09:13:53

标签: ios uiimageview uiimage drawing resolution

我需要创建一个图像日历(尺寸为640 x 960或960 x 640)。现在我尝试的一种方法是创建一个视图,向其添加一个图像视图,呈现图像,用子视图“绘制”它,然后保存以查看文件。

现在这按计划工作,但在模拟器中测试,保存图像的分辨率为306 x 462(我正在保存的视图大小)。现在我只丢失了一半的原始分辨率......

有什么方法可以解决这个问题吗?

保存视图的代码:

UIGraphicsBeginImageContext(self.backgroundImageView.bounds.size);
[self.backgroundImageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

NSString *fullPath = [NSString stringWithFormat:@"%@/Calendar.png",basePath];
NSData * binaryImageData = UIImagePNGRepresentation(image);

[binaryImageData writeToFile:fullPath atomically:YES];

2 个答案:

答案 0 :(得分:0)

您没有考虑设备屏幕比例,应该这样做:UIGraphicsBeginImageContextWithOptions(self.backgroundImageView.bounds.size, YES, [UIScreen mainScreen].scale);

答案 1 :(得分:-2)

如果有人遇到类似的问题,我会提出两个解决方案:

1)在保存之前放大所有内容(你必须使用AutoresizingMasks)。

2)将所有内容放入scrollView并以大尺寸显示,以便用户在想要查看所有内容时滚动。