У меня есть 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;
}
Не стесняйтесь комментировать, если есть лучший и более простой способ сделать это.