Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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