2009-05-13 20 views

risposta

147

Il primo passo è quello di definire una sottoclasse di UIView, per creare uno spazio per disegnare.

Se stai iniziando con una nuova applicazione, il modo più semplice è quello di iniziare con la "base di Window- applicazione ".

Quindi passare a Nuovo file e creare una "Classe Objective-C" con "Sottoclasse di" impostato su "UIView" e assegnargli un nome, ad esempio MyView.m.

Ora aprire il gruppo "Risorse" e fare doppio clic su "MainWindow.xib" per aprirlo in Interface Builder. Da qui dovresti vedere una finestra chiamata "Finestra". Premi Cmd + Maiusc + L per visualizzare la Libreria e trascina un componente "Visualizza" nella finestra e posizionalo in modo da poterlo vedere tutto. Con la nuova vista selezionata, premi Cmd + 4 per visualizzare Identity Inspector e in "Class Identity", fai clic sul menu a discesa e seleziona MyView.

Successivamente, è necessario per l'attuazione del drawRect: metodo MyView.m, ecco qualche esempio di codice che disegna una linea:

- (void)drawRect:(CGRect)rect { 
    CGContextRef c = UIGraphicsGetCurrentContext(); 

    CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f}; 
    CGContextSetStrokeColor(c, red); 
    CGContextBeginPath(c); 
    CGContextMoveToPoint(c, 5.0f, 5.0f); 
    CGContextAddLineToPoint(c, 50.0f, 50.0f); 
    CGContextStrokePath(c); 
} 

Salva tutto e fare clic su "Build and Run", si dovrebbe ora vedere una breve linea rossa su iPhone.

Per ulteriori informazioni su Core Graphics, consultare la documentazione Apple. Ho anche trovato utile cercare le funzioni che iniziano con CGContext nel visualizzatore di documentazione Xcode, e sfogliare quelle - la maggior parte delle funzioni di Core Graphics che finirai per usare inizierà con il termine "CGContext".

+0

Grazie Tobias .... Mi aiuta .... –

+56

+1 per rispondere con il codice al posto di RTFM. – willc2

+0

+1 mi ha aiutato :) –

4

È inoltre possibile tracciare una linea utilizzando UIBezierPath. Quanto segue tracciare una linea verticale centrata orizzontale:

- (void)drawRect:(CGRect)rect { 
    CGFloat rectHeight = CGRectGetHeight(rect); 
    CGFloat rectWidth = CGRectGetWidth(rect); 

    UIBezierPath *line = [UIBezierPath bezierPath]; 
    [line moveToPoint:CGPointMake(0, rectHeight/2)]; 
    [line addLineToPoint:CGPointMake(rectWidth, rectHeight/2)]; 

    [[UIColor lightGrayColor] setStroke]; 
    [line stroke]; 
} 
Problemi correlati