Cocoa touch 适用于iPad(iOS 3.2)的CGPathGetPathBoundingBox()的替代方案

Cocoa touch 适用于iPad(iOS 3.2)的CGPathGetPathBoundingBox()的替代方案,cocoa-touch,uitableview,core-graphics,quartz-2d,Cocoa Touch,Uitableview,Core Graphics,Quartz 2d,我正在尝试使用QuartzCore来渲染半复杂的文本/渐变/图像UITableViewCell合成。谢天谢地,不透明将使我能够直观地构建视图,然后吐出源代码来访问cocoa touch。问题是,不透明性假设代码在iOS 4上运行,如果您想在iPad上绘制石英视图,这是一个问题 对我来说,有问题的方法是CGPathGetPathBoundingBox。。。有人能给我指出一个合适的替代方法或解决方法吗 如果你想了解一些上下文(没有双关语的意思),你可以这样做: transform = CGAffin

我正在尝试使用QuartzCore来渲染半复杂的文本/渐变/图像UITableViewCell合成。谢天谢地,不透明将使我能够直观地构建视图,然后吐出源代码来访问cocoa touch。问题是,不透明性假设代码在iOS 4上运行,如果您想在iPad上绘制石英视图,这是一个问题

对我来说,有问题的方法是CGPathGetPathBoundingBox。。。有人能给我指出一个合适的替代方法或解决方法吗

如果你想了解一些上下文(没有双关语的意思),你可以这样做:

transform = CGAffineTransformMakeRotation(1.571f);
tempPath = CGPathCreateMutable();
CGPathAddPath(tempPath, &transform, path);
pathBounds = CGPathGetPathBoundingBox(tempPath);
point = pathBounds.origin;
point2 = CGPointMake(CGRectGetMaxX(pathBounds), CGRectGetMinY(pathBounds));
transform = CGAffineTransformInvert(transform);
另一种方法是自己记下锚点的最左边、最右边、最上面和最下面的坐标,然后根据这些数字计算出原点和大小


您应该将其包装在一个函数中,并将其命名为类似于
MyPathGetPathBoundingBox
,并使用它直到您放弃对iOS 3.x的支持。这将使您很容易切换到
CGPathGetPathBoundingBox

我看到了另一个描述类似的函数,但我不确定它的功能是否相同。。。CGPathGetBoundingBox。。。格雷格·库姆斯:区别在于,
CGPathGetBoundingBox
考虑了控制点,因此对于曲线段,曲线覆盖的整个区域都将构成边界框
CGPathGetPathBoundingBox
仅考虑定位点,因此曲线可以像直线一样进行有效测量。作为一个病态的例子,一个由两个曲线段组成的圆根本没有面积(因为两个锚点之间只有一条直线),而一个多边形(只有lineto的),则有面积。这是一个很好的解释。谢谢你!