0
私は (X1、Y1)、(X2、Y2)、(X3、Y3)のようないくつかのポイントを持っている...iOSで滑らかな曲線を描くにはどうすればいいですか?
今、私は滑らかな曲線でグラフを描きたいですか?
それを行うための任意のより良い方法はあります私は
-(void)drawPrices
{
NSInteger count = self.prices.count;
UIBezierPath *path = [UIBezierPath bezierPath];
path.lineCapStyle = kCGLineCapRound;
for(int i=0; i<count-1; i++)
{
CGPoint controlPoint[2];
CGPoint p = [self pointWithIndex:i inData:self.prices];
if(i==0)
{
[path moveToPoint:p];
}
CGPoint nextPoint, previousPoint, m;
nextPoint = [self pointWithIndex:i+1 inData:self.prices];
previousPoint = [self pointWithIndex:i-1 inData:self.prices];
if(i > 0) {
m.x = (nextPoint.x - previousPoint.x)/2;
m.y = (nextPoint.y - previousPoint.y)/2;
} else {
m.x = (nextPoint.x - p.x)/2;
m.y = (nextPoint.y - p.y)/2;
}
controlPoint[0].x = p.x + m.x * 0.2;
controlPoint[0].y = p.y + m.y * 0.2;
// Second control point
nextPoint = [self pointWithIndex:i+2 inData:self.prices];
previousPoint = [self pointWithIndex:i inData:self.prices];
p = [self pointWithIndex:i + 1 inData:self.prices];
m = zeroPoint;
if(i < self.prices.count - 2) {
m.x = (nextPoint.x - previousPoint.x)/2;
m.y = (nextPoint.y - previousPoint.y)/2;
} else {
m.x = (p.x - previousPoint.x)/2;
m.y = (p.y - previousPoint.y)/2;
}
controlPoint[1].x = p.x - m.x * 0.2;
controlPoint[1].y = p.y - m.y * 0.2;
[path addCurveToPoint:p controlPoint1:controlPoint[0] controlPoint2:controlPoint[1]];
}
CAShapeLayer *lineLayer = [CAShapeLayer layer];
lineLayer.path = path.CGPath;
lineLayer.lineWidth = LINE_WIDTH;
lineLayer.strokeColor = _priceColor.CGColor;
lineLayer.fillColor = [UIColor clearColor].CGColor;
[self.layer addSublayer:lineLayer];
}
以下のように描画しようとしているが、いくつかの状況では、ラインは
のように「戻る」のだろうか?
ここはSquareの本当に良い例です。https://github.com/jharwig/PPSSignatureView – Shailesh