¿Cómo trazo una línea en el iPhone?

Soy un principiante en la progtwigción de iPhone, y me gustaría dibujar una línea en la pantalla del teléfono con el propósito de estudiar usando Quartz y UIKit.

¿Cómo empiezo a dibujar?

El primer paso es definir una subclase de UIView para crear un espacio para dibujar.

Si está comenzando con una nueva aplicación, la manera más fácil será comenzar con la plantilla “Aplicación basada en la ventana”.

A continuación, vaya a Archivo nuevo y cree una “Clase Objective-C” con “Subclase de” establecido en “UIView”, y asígnele un nombre, digamos MyView.m.

Ahora abre el grupo “Recursos” y haz doble clic en “MainWindow.xib” para abrirlo en Interface Builder. Desde aquí, debería ver una ventana llamada “Ventana”. Pulsa Cmd + Mayús + L para abrir la Biblioteca, y arrastra un componente “Ver” en tu ventana, y colócalo para que puedas verlo todo. Con su nueva Vista seleccionada, presione Cmd + 4 para abrir el Inspector de identidad y en “Identidad de clase”, haga clic en el menú desplegable y seleccione MyView.

A continuación, debe implementar el método drawRect: en MyView.m, aquí hay un código de ejemplo que dibuja una línea:

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

Guarde todo y haga clic en “Crear y ejecutar”, ahora debería ver una línea roja corta en el iPhone.

Para obtener más información sobre Core Graphics, busque la documentación de Apple. También me pareció útil buscar funciones que comenzaran con CGContext en el visor de documentación de Xcode, y navegar por ellas: la mayoría de las funciones de Core Graphics que terminará usando comenzarán con el término “CGContext”.

También puede dibujar una línea usando UIBezierPath . Lo siguiente dibujará una línea horizontal centrada 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]; }