我如何在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]; }