代码之家  ›  专栏  ›  技术社区  ›  Greg Combs

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

  •  2
  • Greg Combs  · 技术社区  · 14 年前

    我正在尝试使用Quartzcore来渲染半复杂的文本/渐变/图像UITableViewCell复合。谢天谢地,不透明性将让我直观地构建视图,然后吐出源代码,放到CocoaTouch中。问题是,不透明性假设代码在iOS4上运行,如果您想在iPad上绘制Quartz视图,这是一个问题。

    对我来说,有问题的方法是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);
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   Peter Hosey    14 年前

    另一种选择是 iterate on the points of the path 记下锚点的最左边、最右边、最上面和最下面的坐标,然后根据这些数字计算出原点和大小。

    您应该将它包装在一个函数中,并将其命名为 MyPathGetPathBoundingBox ,并使用它直到您放弃对iOS 3.x的支持。这将使切换到 CGPathGetPathBoundingBox 一旦你能做到。