我在UIView
内有一个UIScrollView
,我正在使用CAShapeLayer
并在视图中绘制多个子图层。在某些情况下,图层不可见,我想滚动视图,以便图层变得可见。使用以下方式滚动我:
[self.scrollView setContentOffset: CGPointMake(0, offset) animated: NO];
我很难弄清楚偏移是什么。我试图获得封闭的矩形,但它的起源始终为(0,0)。
如何计算要在偏移中使用的图层的位置?
更新
这似乎可以获得所有子图层的封闭矩形:
- (CGRect) enclosingLayerRect
{
CGRect rect = CGRectZero;
if (self.sublayers.count)
{
CAShapeLayer *layer = self.sublayers[0]; // need to get the first one, otherwise the origin will be (0,0)
rect = CGPathGetBoundingBox(layer.path);
for (CAShapeLayer *layer in self.sublayers)
{
CGRect layerRect = CGPathGetBoundingBox(layer.path);
rect = CGRectUnion(rect, layerRect);
}
}
return rect;
}
如果有更好,更简单的方法,请随意发表评论。
答案 0 :(得分:0)
使用convertRect:toView:
方法将框架转换为滚动视图的坐标系,生成的rect应该为您提供所需的内容偏移。