我使用SVGKit绘制地图,它基本上使用SVG数据形成UIBezierPath,并将其传递给CAShapeLayer并渲染它。
重要代码:
if (!in_array($dirName.'/'.$something, $ftp->nlist($dirName))) {
// do something
}
将mapView的框架设置为屏幕的宽度和高度,我发现地图视图的高度小于屏幕高度。所以我想将mapView的高度剪切为与地图的实际高度相同(UIBezierPah)
因为我不知道在哪里读取UIBezierPath的最大Y数据,所以我不知道如何计算最大Y.
有人可以帮忙吗?
答案 0 :(得分:0)
UIBezierPath有一个bounds属性,但我要问的是所有UIBeizerPath的实际大小。
我想出了以下代码:
@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后获得实际大小。