请告诉我,如何将起点添加到终点直线。并且我添加了按钮以拖动相同的行以强调终点以调用该方法。请告诉我,我需要代码。
答案 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];