如何使用目标c创建起点和终点直线

时间:2015-06-19 13:28:27

标签: ios objective-c

请告诉我,如何将起点添加到终点直线。并且我添加了按钮以拖动相同的行以强调终点以调用该方法。请告诉我,我需要代码。

1 个答案:

答案 0 :(得分:1)

有两种常用技巧。

使用CAShapeLayer

创建一个UIBezierPath(用你想要的任何东西替换坐标):

 UIBezierPath *path = [UIBezierPath bezierPath];
 [path moveToPoint:CGPointMake(10.0, 10.0)];
 [path addLineToPoint:CGPointMake(100.0, 100.0)];

创建一个使用该UIBezierPath的CAShapeLayer:

CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = [path CGPath];
shapeLayer.strokeColor = [[UIColor blueColor] CGColor];
shapeLayer.lineWidth = 3.0;
shapeLayer.fillColor = [[UIColor clearColor] CGColor];

将CAShapeLayer添加到视图的图层:

[self.view.layer addSublayer:shapeLayer];

在以前版本的Xcode中,您必须手动将QuartzCore.framework添加到项目的“Link Binary with Libraries”中并导入.m文件中的标题,但这不再是必需的(如果您有“启用模块”)和“自动链接框架”构建设置已打开)。

另一种方法是将UIView子类化,然后在drawRect方法中使用CoreGraphics调用:

创建一个UIView子类并定义一个绘制线条的drawRect:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]);
    CGContextSetLineWidth(context, 3.0);
    CGContextMoveToPoint(context, 10.0, 10.0);
    CGContextAddLineToPoint(context, 100.0, 100.0);
    CGContextDrawPath(context, kCGPathStroke);
}

然后,您可以将此视图类用作NIB /故事板或视图的基类,也可以让视图控制器以编程方式将其添加为子视图:

CustomView *view = [[CustomView alloc]     initWithFrame:self.view.bounds];
view.backgroundColor = [UIColor clearColor];

[self.view addSubview:view];