我需要创建一个图像日历(尺寸为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];
答案 0 :(得分:0)
您没有考虑设备屏幕比例,应该这样做:UIGraphicsBeginImageContextWithOptions(self.backgroundImageView.bounds.size, YES, [UIScreen mainScreen].scale);
。
答案 1 :(得分:-2)
如果有人遇到类似的问题,我会提出两个解决方案:
1)在保存之前放大所有内容(你必须使用AutoresizingMasks)。
2)将所有内容放入scrollView并以大尺寸显示,以便用户在想要查看所有内容时滚动。