如何在iPhone上绘制一条线?

43
我是一名iPhone编程的初学者,想要使用Quartz和UIKit在手机屏幕上画一条线以供学习。

我该如何开始绘制呢?

2个回答

146
第一步是定义一个UIView的子类,以创建一个绘图空间。
如果您从一个新应用程序开始,最简单的方法将是使用“基于窗口的应用程序”模板开始。
然后去新建文件并创建一个“Objective-C类”,将“Subclass of”设置为“UIView”,并给它起一个名字,比如MyView.m。
现在打开“资源”组并双击“MainWindow.xib”以在Interface Builder中打开它。从这里,您应该看到一个名为“Window”的窗口。按下Cmd+Shift+L以打开库,并将一个“View”组件拖到您的窗口上,并将其定位,以便您可以看到所有内容。选择你的新视图,在其中按下Cmd+4以打开识别检查器,并在“类标识”下拉菜单中选择MyView。
接下来,您需要在MyView.m中实现drawRect:方法,以下是一些绘制线条的示例代码:
- (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上看到一个短的红线。

要了解更多关于核心图形的信息,请查阅苹果文档。我还发现,在Xcode文档查看器中搜索以CGContext开头的函数,并浏览这些函数很有帮助-您最终使用的大多数核心图形函数都将以“CGContext”一词开头。


1
无法为willc2和Tobias加油。 - Doug Molineux
非常感谢你,这对我非常有帮助。 - ios developer
如何在绘制线条时,随着触摸移动添加模糊效果? - Bhavin

4
您也可以使用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];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接