博士,你是对的:这非常令人困惑!
但我认为 Tom 是正确的,只需使用 [aBezierPath stroke]。
所以,它会是这样的:
REF是您构建的 (CGContextRef)。
YOURBEZIERPATH是一个 (UIBezierPath*)。
不可避免地,您必须处理“颠倒绘图”问题,因此:
UIGraphicsPushContext(REF);
CGContextSaveGState(REF);
CGContextTranslateCTM(REF, 0, the height*);
CGContextScaleCTM(REF, 1.0, -1.0);
[YOURBEZIERPATH stroke];
CGContextRestoreGState(REF);
UIGraphicsPopContext();
就是这样了。
在下面回复您的评论:我有一组 UIBezierPaths。每个贝塞尔曲线都有自己的风格和颜色。
这有帮助吗?...用 for 循环替换一个“中风”调用:
UIGraphicsPushContext(REF);
CGContextSaveGState(REF);
CGContextTranslateCTM(REF, 0, the height*);
CGContextScaleCTM(REF, 1.0, -1.0);
for each of YOURBEZIERPATH in your array...
{
CGContextSaveGState(REF);
[YOURBEZIERPATH stroke];
CGContextRestoreGState(REF);
}
CGContextRestoreGState(REF);
UIGraphicsPopContext();
您实际上不需要费心使用 aBezierPath.CGPath 或其副本。
你又是对的,UI 和 CG 的两个世界非常令人困惑!
*高度:通常类似于 self.frame.size.height。我只是为将来寻找通用示例代码的人提供了这个。