Как нарисовать линию на iPhone?

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

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

2 ответов


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

Если вы начинаете с нового приложения, самым простым способом будет начать с шаблона" Window-based application".

затем перейдите в новый файл и создайте "класс Objective-C" с "подклассом", установленным в "UIView", и дайте ему имя, скажем MyView.м.

теперь откройте группу " ресурсы "и дважды щелкните по" MainWindow.xib", чтобы открыть его в Interface Builder. Отсюда вы должны увидеть окно с именем "окно". Нажмите Cmd+Shift+L, чтобы открыть библиотеку, и перетащите компонент "вид" в окно и расположите его так, чтобы вы могли видеть все это. Выбрав новое представление, нажмите Cmd+4, чтобы вызвать инспектор идентификации, и в разделе "идентификация класса" нажмите раскрывающийся список и выберите 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);
}

сохранить все и нажмите " построить и Run", теперь вы должны увидеть короткую красную линию на iPhone.

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


вы также можете нарисовать линии с помощью 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];
}