Como faço para desenhar uma linha no iPhone?

Eu sou um novato na programação do iPhone, e gostaria de desenhar uma linha para a canvas do telefone para fins de estudo usando Quartz e UIKit.

Como começo a desenhar?

O primeiro passo é definir uma subclass do UIView, para criar um espaço para desenhar.

Se você estiver começando com um novo aplicativo, a maneira mais fácil será começar com o modelo “Aplicativo baseado em janelas”.

Então vá New File e crie um “Objective-C Class” com “Subclass of” definido como “UIView”, e dê um nome, diga MyView.m.

Agora abra o grupo “Recursos” e clique duas vezes em “MainWindow.xib” para abri-lo no Interface Builder. A partir daqui você deve ver uma janela chamada “Janela”. Pressione Cmd + Shift + L para abrir a Biblioteca e arraste um componente “Visualizar” para a sua janela e posicione-o para poder ver tudo. Com sua nova Visualização selecionada, pressione Cmd + 4 para abrir o Identity Inspector e, em “Identidade da Classe”, clique na lista suspensa e escolha MyView.

Em seguida, você precisa implementar o método drawRect: em MyView.m, aqui está um código de exemplo que desenha uma linha:

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

Salve tudo e clique em “Build and Run”, você deve ver agora uma pequena linha vermelha no iPhone.

Para mais informações sobre o Core Graphics, consulte a Documentação da Apple. Eu também achei útil procurar funções começando com o CGContext no visualizador de documentação do Xcode, e navegar através delas – a maioria das funções do Core Graphics que você usará iniciarão com o termo “CGContext”.

Você também pode desenhar uma linha usando o UIBezierPath . O seguinte desenhará uma linha horizontal cinput 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]; }