iPhone:连接到形状的线连接器

时间:2012-02-29 12:52:27

标签: iphone core-graphics shapes bezier connector

如何在两个形状之间绘制线连接器,以便线条以适当的角度绘制并随着形状的任何移动一起移动?

这样的事情:

enter image description here

我想我的UIBezier曲线是我需要的,但是任何有关入门的教程或帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

我认为UIBezierPath是正确的方法,所以你一定要仔细阅读。我写了一个快速的例子来说明我还没有使用更多的选项。

绘制路径并不困难。 您必须跟踪您创建的所有框并存储它们之间的连接某种程度上,它在很大程度上取决于您如何存储框,但关系数据库感觉就像是正确的解决方案。给定这些对象和连接,您将为其中一个视图生成drawrect路径。

- (void)drawRect:(CGRect)rect {

    // say we already created a "Make" box
    UIBoxThing *make = ...
    // and here we already created a "Diagrams" box
    UIBoxThing *diagrams = ...

    [[UIColor blackColor] setStroke];

    // since we know Diagrams and Make are connected (via some other data), we must draw an arrow between them
    UIBezierPath *path = [[UIBezierPath alloc] init];
    path.lineWidth = 2;

    // the midpoint of the right side of our first box
    CGPoint start = CGPointMake(make.frame.origin.x+make.frame.size.width, make.frame.origin.y+(make.frame.size.height/2));

    [path moveToPoint:start];

    // the midpoint of the left size of our second box
    CGPoint end = CGPointMake(diagram.frame.origin.x, diagram.frame.origin.y+(diagram.frame.size.height/2));

    [path addLineToPoint:end];

    [path stroke];
}

这可以说明代码可以判断框是否在另一个或左边的右边,你可以使用addCurveToPoint:或UIBezierPath上的许多其他方法来修改这一行。大多数路径都取决于你的风格,连接两个点没有一个正确的风格。