У меня есть UIView
внутри UIScrollView
, и я использую CAShapeLayer
с несколькими подслоями для рисования на виду. В некоторых случаях слой не отображается, и я бы хотел прокрутить представление, чтобы слой стал видимым. Чтобы прокрутить, я использую:Прокрутите CAShapeLayer в поле зрения
[self.scrollView setContentOffset: CGPointMake(0, offset) animated: NO];
Мне сложно определить, что такое офсет. Я попытался получить замкнутый прямоугольник, но всегда имеет начало координат (0,0).
Как я могу рассчитать положение слоя для использования в смещении?
UPDATE:
Это похоже на работу, чтобы получить охватывающий прямоугольник для все подуровня:
- (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;
}
Не стесняйтесь комментировать, если есть лучше, более простой способ сделать это.
Спасибо, я попробую. Но остается вопрос: как получить замкнутый прямоугольник слоя относительно представления? – Koen
См. Мое обновление выше, 'convertRect: toView:' не требуется с этим подходом. – Koen