objective c - Image appearing pixelerated -
this trying do
- create uiimage view.
- do drawing on it
- press share button share image drawings on it.
my code works perfect on ipad , iphone. problem comes retina display. guess scale not handled correctly, not sure doing wrong. code
// create uiimageview named centercanvas // drawing cgpoint origin = centercanvas.frame.origin; cgsize size = centercanvas.frame.size; cgsize screensize = [self returnscreensize]; cgrect rect = cgrectmake(origin.x, origin.y, size.width, size.height); uigraphicsbeginimagecontext(screensize); cgcontextref context = uigraphicsgetcurrentcontext(); [self.view.layer renderincontext:context]; uiimage *img = uigraphicsgetimagefromcurrentimagecontext(); uigraphicsendimagecontext(); cgimageref imageref = cgimagecreatewithimageinrect([img cgimage], rect); [shareview setimage:[uiimage imagewithcgimage:imageref]]; -(cgsize) returnscreensize { cgrect screenbounds = [[uiscreen mainscreen] bounds]; cgfloat screenscale = [[uiscreen mainscreen] scale]; cgsize screensize = cgsizemake(screenbounds.size.width * screenscale,screenbounds.size.height * screenscale); return screensize; }
try using
uigraphicsbeginimagecontextwithoptions(view.bounds.size, view.opaque, 0.0); instead of old uigraphicsbeginimagecontext, uses scale factor (third argument above) equal 1. giving 0.0 scale factor scale factor current screen. have @ reference.
Comments
Post a Comment