Создание UIBezierPath больше похоже на NSBezierPath с элементами elementCount и elementAtIndex
При перемещении некоторого кода Cocoa на Cocoa Touch я был разочарован, обнаружив, что UIBezierPath не имеет методов "Доступ к элементам пути":
– elementCount
– elementAtIndex:
– elementAtIndex:associatedPoints:
– removeAllPoints
– setAssociatedPoints:atIndex:
Единственный способ получить эти элементы в Cocoa Touch, кажется, через CGPathApply
. Прежде чем попытаться воссоздать это как подкласс или категорию UIBezierPath, мне было интересно, было ли это уже сделано. Кто-нибудь есть идея, если что-то подобное уже доступно?
Ответы
Ответ 1
Я сделал порт на https://github.com/seivan/UIBezierPathPort, но с помощью Swift.
Имеет набор тестов и документацию.
Работает с бета-версией 5.
Технически вы должны иметь возможность использовать Swift в проекте Obj-C.
Сообщите мне, как вам это нравится.
Ответ 2
Я столкнулся с той же проблемой пару месяцев назад и не смог найти ничего доступного в тот момент. (По правде говоря, поскольку переход CGPathApply
был не таким уж плохим для моих нужд, мне было не очень сложно быть честным).
Функция applier вызывается для каждого CGPathElement
в CGPath
, такой элемент состоит из CGPathElementType
и C-массива CGPoints
.
Так как a CGPathElementType
- это перечисление с пятью различными значениями
enum CGPathElementType {
kCGPathElementMoveToPoint,
kCGPathElementAddLineToPoint,
kCGPathElementAddQuadCurveToPoint,
kCGPathElementAddCurveToPoint,
kCGPathElementCloseSubpath
};
Вам не нужно писать много кода, чтобы делать (контролировать) точечную манипуляцию/проверку пути. Имея тот же доступный интерфейс, было бы неплохо.