La mia applicazione è in grado di fare un disegno di figura semplice (fino a quando ottengo un codice più stabile, sto attaccando solo con una figura) ed è anche in grado di ridimensionarle. Il codice che uso per creare un UIView
è la seguente:Best practice di disegno UIView
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
[self setContextFillColor:context];
[self setContextStrokeColor:context];
[self setLineWidth:context];
CGFloat lineThickness = [self lineWidth] ;
CGFloat halfLineThickess = lineThickness/2.0f;
CGContextAddRect(context, CGRectMake(halfLineThickess,halfLineThickess, rect.size.width - lineThickness, rect.size.height - lineThickness));
CGContextDrawPath(context, kCGPathEOFillStroke);
}
che mi dà, con una dimensione di ingresso (100.0f, 100.0f), in questo modo:
Questa cifra è all'interno di un "container" UIView
che a sua volta si trova all'interno di uno UIScrollView
. Il mio problema con questo è quando sto ridimensionando la mia figura e raggiungo dimensioni di circa 1000 * 1000 (il mio "contenitore" è 20.000 * 20.000), inizio a ricevere avvisi di memoria e l'applicazione alla fine si arrende. Quindi le mie domande sono:
1) Dovrei prendere in considerazione di inserire una dimensione massima per il UIView
?
2) Come potrei usare gli strumenti per tracciare questo tipo di problemi e vedere dove sta arrivando il problema (o dove si sta facendo il sollevamento pesante).
3) Devo utilizzare un tipo di memorizzazione nella cache come this?
4) Ci sono alcune buone pratiche da considerare, quando si disegna un UIView
?
5) Devo considerare CALayer
, anche se ho bisogno di ascoltare i tocchi?
Il ridimensionamento di UIView
si basa principalmente su this.
Hai mai pensato di utilizzare QuartzCore e solo utilizzando la proprietà layer della tua vista per disegnare un bordo? – runmad
Il fatto è: questa è una figura semplice. Alla fine ne avrò di più complessi, e non penso che giocare con le proprietà di 'UIView' sia sufficiente. Ma grazie per il suggerimento. – Peres
se è necessario disegnare contenuti di grandi dimensioni (magari con lo zoom), si consiglia di controllare 'CATiledLayer' http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CATiledLayer_class/Introduction/Introduction.html – Bastian