Come faccio a disegnare una linea su iPhone?

Sono un principiante nella programmazione di iPhone e vorrei disegnare una linea sullo schermo del telefono allo scopo di studiare usando Quartz e UIKit.

Come posso iniziare a disegnare?

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

Se stai iniziando con una nuova applicazione, il modo più semplice sarà iniziare con il modello “Applicazione basata su finestra”.

Quindi vai su Nuovo file e crea una “Classe Objective-C” con “Sottoclass di” impostato su “UIView” e assegnagli un nome, ad esempio MyView.m.

Ora apri il gruppo “Risorse” e fai 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 implementare il metodo drawRect: in MyView.m, ecco alcuni esempi 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 fai clic su “Crea ed esegui”, ora dovresti 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 usando inizieranno con il termine “CGContext”.

Puoi anche tracciare una linea usando UIBezierPath . Quanto segue traccerà una linea orizzontale centrata verticalmente:

 - (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]; }