如何获得UIBezierPath的精确高度

时间:2015-05-20 10:11:37

标签: ios

我使用SVGKit绘制地图,它基本上使用SVG数据形成UIBezierPath,并将其传递给CAShapeLayer并渲染它。

重要代码:

if (!in_array($dirName.'/'.$something, $ftp->nlist($dirName))) {  
   // do something
}             

将mapView的框架设置为屏幕的宽度和高度,我发现地图视图的高度小于屏幕高度。所以我想将mapView的高度剪切为与地图的实际高度相同(UIBezierPah)

因为我不知道在哪里读取UIBezierPath的最大Y数据,所以我不知道如何计算最大Y.

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

UIBezierPath有一个bounds属性,但我要问的是所有UIBeizerPath的实际大小。

我想出了以下代码:

  1. 首先添加一个属性作为实际大小,
  2. @property (nonatomic, assign) CGSize actualSize;

    和处理UIBezierPath时:

    for (FSSVGPathElement* path in _svg.paths) {
        UIBezierPath* scaled = [path.path copy];
        [scaled applyTransform:scaleTransform];
        CGFloat absoluteWidth = scaled.bounds.origin.x + scaled.bounds.size.width;
        CGFloat absoluteHeight = scaled.bounds.origin.y + scaled.bounds.size.height;
        if (absoluteHeight > maxHeight)
            maxHeight = absoluteHeight;
        if (absoluteWidth > maxWidth)
            maxWidth = absoluteWidth;
        ....
    }
    
    self.actualSize = CGSizeMake(ceil(maxWidth), ceil(maxHeight));
    

    现在,我可以在将所有路径添加到CAShapeLayer后获得实际大小。