Domanda

stavo guardando alcune animazioni nel mio iPhone app e sentivo come se fosse sorta di brutto. E poi ho undertsood: è semplicemente non animare attraverso stati subpixel.

Quindi, nel caso in cui io uso solite + beginAnimations / + commitAnimations, spostando alcune cose a pochi pixel appaiono "saltellante". Come posso evitarlo? Ci sono bandiere per farlo animare attraverso coordinate float o qualsiasi altra cosa?

Solo per darvi un'idea di quello che ho e quello che sto cercando, si prega di fare riferimento alla foto:

alt text http://www.ptoing.net/subpixel_aa.gif

Grazie in anticipo, Anton

È stato utile?

Soluzione

E 'buffo, ma ho scoperto che UIImageView animano il suo contenuto con aniti-aliasing, mentre i bordi della vista non sono anti-alias (hard). Sembra di essere a causa UIView stessa deve mantenere gli stessi limiti, mentre il rendering subpixel potrebbe aggiungere al legato un po '.

Così, ho finito per mettere semplicemente un'immagine con un pò di spazio trasparente attorno al quadro, e tutto è andato liscio.

Non dobbiamo permettere che UIView ha tagliato il suo contenuto per voi:)

Altri suggerimenti

Si può provare che deriva la voce che si sta animando da un UIView personalizzata che sostituisce il suo metodo drawRect e imposta anti-aliasing per esso lascia quindi il genitore disegnare in esso. Qualcosa sulla falsariga di:

- (void) drawRect:(CGRect)area
{
  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextSaveGState(context);
  CGContextSetShouldAntialias(context, true);
  CGContextSetAllowsAntialiasing(context, true);
  [super drawRect:area];
  // We have to turn it back off since it's not saved in graphic state.
  CGContextSetAllowsAntialiasing(context, false);
  CGContextRestoreGState(context);
}

D'altra parte, potrebbe essere troppo tardi la pipeline di rendering per il momento si arriva qui, così si potrebbe finire per rotolare il proprio schema di animazione che permette di avere il pieno controllo su di pixel-posizionamento.

Per il commento di Jeeva sopra, è possibile effettuare bordi UIView rendering con anti-aliasing dalle impostazioni la seguente opzione nella Info.plist su YES.

Renders with edge antialiasing

Ecco il link Jeeva sottolineato:

http://www.techpaa.com/2012/ 06 / evitando-view-bordo-antialiasing.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top