2015-05-11 5 views
0

Я использую UIBezierPath для создания фигур, которые я показываю с помощью CAShapeLayer. Однако, чтобы установить правильный фрейм CAShapeLayer, мне нужен фрейм, содержащий объект UIBeziehPath. В соответствии с документацией имеется bounds. Тем не менее, когда я использую его, слой не содержит рисованного пути. Есть ли способ конвертировать path.bounds в CGRect, соответствующий правильному кадру в системе координат, содержащей вид? Я пробовалПолучение рамки из ограничивающего прямоугольника UIBezierPath

[self convertRect:path.bounds toView:self] 

не имеет успеха. Спасибо за помощь.

ответ

3

Вы можете использовать следующее:

CGRect pathRect = CGPathGetPathBoundingBox(path); 

Кроме того, из CALayer documentation:

Рама прямоугольник положение и размер слоя, указанного в пространстве координат superlayer в. Для слоев прямоугольник рамки является вычисленным свойством, которое получается из значений в свойствах, anchorPoint и position. Когда вы назначаете новое значение этому свойству, слой изменяет свои свойства позиции и границ в соответствии с указанным вами прямоугольником. Значения каждой координаты в прямоугольнике измеряются в точках.

Вы можете установить границы (который оставляет позицию слоя нетронутой) или установить кадр (который будет преобразован в пределы & положения).

Смежные вопросы