Я начинаю программировать на iPhone и хочу нарисовать линию на экране телефона с целью изучения с использованием Quartz и UIKit.
Как начать рисование?
Я начинаю программировать на iPhone и хочу нарисовать линию на экране телефона с целью изучения с использованием Quartz и UIKit.
Как начать рисование?
Первый шаг - определить подкласс 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".
Вы также можете нарисовать линию, используя 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];
}