我如何在iPhone上画一条线?

我是iPhone编程的初学者,想用Quartz和UIKit来研究电话屏幕。

我如何开始绘画?

第一步是定义UIView的子类,创build一个空间来绘制。

如果你从一个新的应用程序开始,最简单的方法是从“基于窗口的应用程序”模板开始。

然后去新build文件,并创build一个“Objective-C类”与“子类”设置为“UIView”,并给它一个名字,说MyView.m。

现在打开“Resources”组,双击“MainWindow.xib”在Interface Builder中打开它。 从这里你应该看到一个名为“窗口”的窗口。 点击Cmd + Shift + L调出图书馆,并拖动一个“视图”组件到你的窗口,并定位它,让你可以看到它的全部。 select新的视图后,按Cmd + 4打开Identity Inspector,在“Class Identity”下,单击下拉菜单并selectMyView。

接下来,您需要在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); } 

保存所有内容并点击“Build and Run”,你现在应该在iPhone上看到一条简短的红线。

有关Core Graphics的更多信息,请查阅Apple文档。 我还发现在Xcode文档查看器中search以CGContext开头的函数是有帮助的,并且浏览这些函数 – 大多数最终使用的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]; }