-1

我有这段代码可以绘制一条简单的曲折线。X 轴上的初始点为 0。问题是我试图将初始点偏移 20pts,但我就是做不到。

我已经尝试过 CGRectInset 和 CGRectOffSet,但没有奏效..

这是我的代码:

- (UIBezierPath *)pathFromDataInRect:(CGRect)rect {

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0, CGRectGetMidY(rect))];
[path addLineToPoint:CGPointMake((CGRectGetWidth(rect)/3), CGRectGetMaxY(rect))];
[path addLineToPoint:CGPointMake((CGRectGetWidth(rect)/3)*2, CGRectGetMinY(rect))];
[path addLineToPoint:CGPointMake((CGRectGetWidth(rect)/3)*3, CGRectGetMidY(rect))];
UIColor *startColor = [UIColor redColor];
[startColor setStroke];
[path stroke];
return path;
}


- (CGRect)closingDataRect {

return CGRectMake(0, 150, 200, 100);
}


- (void)drawRect:(CGRect)rect
{

CGRect dataRect = [self closingDataRect];

CGRect dataRectOffset = CGRectOffset(dataRect, 20, 0);

[self pathFromDataInRect:dataRectOffset];


}

第一张照片是我运行代码时的照片,第二张照片是我想要的。

我所拥有的图片

我想要的图片

4

1 回答 1

1

您的第一个 moveToPoint 调用将 x 位置硬编码为 0。如果您想从矩形的右边缘开始,您不应该更改第一条 moveToPoint 线以传入矩形的 origin.x 作为起点吗?

然后,您还需要更改任何纯粹从宽度/高度计算路径中的点的代码,使用宽度+origin.x 或高度+origin.y,因此当您移动矩形的原点时,矩形中的所有点都会移动也是。

于 2013-10-07T18:34:24.983 回答