Search code examples
iosuiimageviewuiimagedrawingresolution

Objective C / Drawing and resolution questions


I need to create a calendar of an image (they are size 640 x 960 or 960 x 640). Now one approach I tried was to create a view, add an image view to it, present the image, "draw" on it with subviews, then save to view to a file.

Now this works as planned, but testing it in simulator, the resolution of the saved image is 306 x 462 (size of the view I'm saving). Now I just lost half my original resolution...

Is there any way to work around this?

Code that saved the view:

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];

Solution

  • If anyone has similar problem, I've come up with 2 solutions:

    1) Enlarge everything before saving (you'll have to play around with AutoresizingMasks).

    2) Put everything into a scrollView and display it in the large size so the user scrolls around if he wants to see everything.