gpt4 book ai didi

ios - UIBezierPath 和 applytransform

转载 作者:可可西里 更新时间:2023-11-01 05:42:21 30 4
gpt4 key购买 nike

我正在尝试实现一个自定义的 UIView,它基本上是一个饼状菜单(有点像分成几片的蛋糕)。

为此,我尝试从中心画一个圆和一系列线,就像图表轮中的射线一样。

我已经成功绘制了圆圈,现在我想绘制将圆圈分成几部分的线。

这是我目前所拥有的:

-(void)drawRect:(CGRect)rect{

[[UIColor blackColor] setStroke];
CGContextRef ctx = UIGraphicsGetCurrentContext();

CGFloat minDim = (rect.size.width < rect.size.height) ? rect.size.width : rect.size.height;

CGRect circleRect = CGRectMake(0, rect.size.height/2-minDim/2, minDim, minDim);

CGContextAddEllipseInRect(ctx, circleRect);
CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor yellowColor] CGColor]));
CGContextFillPath(ctx);

CGPoint start = CGPointMake(0, rect.size.height/2);
CGPoint end = CGPointMake(rect.size.width, rect.size.height/2);

for (int i = 0; i < MaxSlices(6); i++){

CGFloat degrees = 1.0*i*(180/MaxSlices(6));
CGAffineTransform rot = CGAffineTransformMakeRotation(degreesToRadians(degrees));

UIBezierPath *path = [self pathFrom:start to:end];
[path applyTransform:rot];

}
}

- (UIBezierPath *) pathFrom:(CGPoint) start to:(CGPoint) end{

UIBezierPath* aPath = [UIBezierPath bezierPath];
aPath.lineWidth = 5;
[aPath moveToPoint:start];
[aPath addLineToPoint:end];
[aPath closePath];
[aPath stroke];
return aPath;
}

问题是路径上的 applyTransform 似乎没有做任何事情。正确绘制的第一个路径手势和后面的路径手势不受旋转的影响。基本上我看到的只是一条路。在此处查看屏幕截图 http://img837.imageshack.us/img837/9757/iossimulatorscreenshotf.png

感谢您的帮助!

最佳答案

在转换路径之前,您正在绘制路径(使用 stroke)。路径只是一种数学表示。它不是“屏幕上”的那一行。您无法通过修改相关数据来移动已绘制的内容。

只需将 [aPath stroke] 移出 pathFrom:to: 并将其放在 applyTransform: 之后。

关于ios - UIBezierPath 和 applytransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9312722/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com