2012-06-26 8 views
5

Ho scritto una funzione per ingrandire un UIView utilizzando CGAffineTransformScale. Dopo un ingrandimento 2x, tutto il testo appare davvero sfocato. Le immagini sono OK se sono in risoluzione più alta per cominciare. C'è un modo per ri-renderizzare tutto il testo nella giusta risoluzione dopo l'ingrandimento?Rendering del testo iOS dopo lo zoom

Edit: ho trovato una soluzione parziale al mio problema: http://markpospesel.wordpress.com/2012/04/03/on-the-importance-of-setting-contentscalefactor-in-catiledlayer-backed-views/

  • (void) {didMoveToWindow self.contentScaleFactor = 2.0; }

Aggiungendo il metodo di cui sopra in una categoria UIView, UILabel, UIButton e la maggior parte delle altre viste ora rendono ad alta risoluzione. Tuttavia, ciò non influisce su UITextView o UIWebView. Il testo all'interno di una di queste due visualizzazioni è ancora sfocato.

Quindi la nuova domanda è: come è possibile ridisegnare UITextView o UIWebView ad alta risoluzione dopo l'ingrandimento?

risposta

7

Sì. È possibile impostare contentScaleFactor sul proprio UIView in modo che faccia il rendering della sua vista di supporto a una risoluzione più alta. Attento sui dispositivi retina, però; vuoi assicurarti che il tuo nuovo contentScaleFactor sia almeno il tuo [[UIScreen mainScreen] scale]. (Io lo imposterei prima dell'animazione in modo che sia uniforme.)

Modifica: per essere chiari, è probabilmente necessario impostare contentScaleFactor della visualizzazione di testo stessa su [[UIScreen mainScreen] scale] * 2 nell'esempio di zoom 2x.

+0

Grazie per la risposta. Sono ancora confuso. Devo impostare contentScaleFactor della vista genitore o della sottoview? Ho provato a impostare la vista genitore, non ha funzionato. Se ciò non ha funzionato, anche l'impostazione delle sottoview dirette non funzionerebbe, dal momento che la vista effettiva con il testo potrebbe essere in profondità nella gerarchia della vista, quindi la sottoview è ancora considerata il suo ancenster. –

+0

È necessario impostarlo sulle visualizzazioni di testo (profonde), sfortunatamente, in qualsiasi punto della gerarchia in cui vivono, poiché sono le viste che eseguono il rendering effettivo del testo in pixel. –

+0

Grazie Jesse! Davvero molto aiutato. –