Как нарисовать линию на iPhone? - PullRequest
43 голосов
/ 13 мая 2009

Я новичок в программировании для iPhone и хотел бы провести линию на экране телефона с целью изучения с использованием Quartz и UIKit.

Как начать рисовать?

Ответы [ 2 ]

147 голосов
/ 13 мая 2009

Первый шаг - определить подкласс UIView, чтобы создать пространство для рисования.

Если вы начинаете с новым приложением, самый простой способ - начать с шаблона «Window-based application».

Затем перейдите в «Новый файл» и создайте «Objective-C Class» с «Subclass of», установленным в «UIView», и дайте ему имя, скажем, MyView.m.

Теперь откройте группу «Ресурсы» и дважды щелкните «MainWindow.xib», чтобы открыть ее в Интерфейсном Разработчике. Отсюда вы должны увидеть окно с именем «Окно». Нажмите Cmd + Shift + L, чтобы открыть библиотеку, и перетащите компонент «Вид» в свое окно и расположите его так, чтобы вы могли видеть все это. Выбрав новый вид, нажмите Cmd + 4, чтобы вызвать Identity Inspector, и в разделе «Class Identity» щелкните раскрывающийся список и выберите MyView.

Далее необходимо реализовать метод drawRect: в MyView.m, вот пример кода, который рисует линию:

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

Сохраните все и нажмите «Построить и запустить», теперь вы должны увидеть короткую красную линию на iPhone.

Для получения дополнительной информации о Core Graphics, посмотрите документацию Apple. Я также счел полезным поискать функции, начинающиеся с CGContext, в средстве просмотра документации Xcode и просматривать их - большинство функций Core Graphics, которые вы в конечном итоге будете использовать, будут начинаться с термина «CGContext».

4 голосов
/ 21 июля 2014

Вы также можете нарисовать линию, используя UIBezierPath. Следующее нарисует вертикально центрированную горизонтальную линию:

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