2012-11-05 16 views
7

Sto creando un PDF scattando uno screenshot di un UIView, al momento funziona molto bene su iPad3 con il display retina, ma quando si esegue il test su altri dispositivi con schermi a risoluzione inferiore sto avendo problemi con la risoluzione del testo.renderInContext su dispositivi retina e non-retina

Ecco il mio codice:

//start a new page with default size and info 
    //this can be changed later to include extra info. 
    UIGraphicsBeginPDFPage(); 

    //render the view's layer into an image context 
    //the last option specifies scale. If 0, it uses the devices scale. 
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 2.0); 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [view.layer renderInContext:context]; 
    UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    //render the screenshot into the pdf page CGContext 
    [screenShot drawInRect:view.bounds]; 

    //close the pdf context (saves the pdf to the NSData object) 
    UIGraphicsEndPDFContext(); 

ho anche cercato di impostare la scala UIGraphicsBeginImageContextWithOptions-2,0, ma questo non fornisce alcuna modifica. Come posso forzare una vista su un iPad2 per il rendering con risoluzione 2x?

risultato atteso:

Imgur

uscita effettiva:

Imgur

+2

Quali problemi hai? Impostare la scala in "UIGraphicsBeginImageContextWithOptions" su 2 dovrebbe forzarlo a eseguire il rendering a una risoluzione 2x. Pubblica immagini che mostrano le uscite corrette e non corrette. –

+0

Ho aggiornato la mia domanda – danielbeard

+0

Sono quegli screenshot del PDF? Le due immagini sono di dimensioni diverse, ma una non è il doppio delle dimensioni dell'altra. Né sembra che fosse reso al doppio della risoluzione dell'altro. Prova a salvare ogni "UIImmagine reale" in un file, ad es. '[UIImagePNGRepresentation (screenShot) writeToFile: @"/tmp/image.png "atomicamente: NO]'. Fallo sul simulatore e copia l'immagine di '/ tmp' dopo ogni esecuzione. –

risposta

5

ho finito per fissare questo impostando in modo ricorsivo la proprietà contentScaleFactor della vista madre e le sue subviews a 2,0.

UIImage stava eseguendo il rendering alla risoluzione corretta, ma il livello non era quando veniva chiamato renderInContext.

Problemi correlati