gpt4 book ai didi

iphone - 如何正确使用CGPathApply

转载 作者:行者123 更新时间:2023-12-03 18:30:46 27 4
gpt4 key购买 nike

我正在尝试使用 CGPathApply 迭代 CGPathRef 对象中的每个 CGPathElement (主要是编写一种自定义方法来保存 CGPath 数据)。问题是,每次调用 CGPathApply 时,我的程序都会崩溃,根本没有任何信息。我怀疑问题出在应用程序函数中,但我无法判断。这是我的代码示例:

- (IBAction) processPath:(id)sender {
NSMutableArray *pathElements = [NSMutableArray arrayWithCapacity:1];
// This contains an array of paths, drawn to this current view
CFMutableArrayRef existingPaths = displayingView.pathArray;
CFIndex pathCount = CFArrayGetCount(existingPaths);
for( int i=0; i < pathCount; i++ ) {
CGMutablePathRef pRef = (CGMutablePathRef) CFArrayGetValueAtIndex(existingPaths, i);
CGPathApply(pRef, pathElements, processPathElement);
}
}

void processPathElement(void* info, const CGPathElement* element) {
NSLog(@"Type: %@ || Point: %@", element->type, element->points);
}

关于为什么调用此应用程序方法似乎崩溃的任何想法?非常感谢任何帮助。

最佳答案

element->pointsCGPoint 的 C 数组,您无法使用该格式说明符将其打印出来。

问题是,没有办法知道该数组包含多少个元素(无论如何我也想不到)。因此,您必须根据操作类型进行猜测,但大多数操作都将单个点作为参数(例如 CGPathAddLineToPoint)。

所以打印出来的正确方法是

CGPoint pointArg = element->points[0];
NSLog(@"Type: %@ || Point: %@", element->type, NSStringFromCGPoint(pointArg));

用于以单个点作为参数的路径操作。

希望有帮助!

关于iphone - 如何正确使用CGPathApply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3720398/

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