#ios #json #uibezierpath
#iOS #json #uibezierpath
Вопрос:
Сверху находятся пути Безье, которые я пытаюсь кодировать / декодировать в / из JSON. Внизу указаны пути после их декодирования.
Сравнивая фактические данные, все точки и контрольные точки совпадают. Например, верхняя кривая B равна:
path.move(to: CGPoint(x: 106, y: 35))
path.addCurve(to: CGPoint(x: 135, y: 47), controlPoint1: CGPoint(x: 106, y: 35), controlPoint2: CGPoint(x: 135, y: 31))
path.addCurve(to: CGPoint(x: 105.5, y: 59.5), controlPoint1: CGPoint(x: 135, y: 63), controlPoint2: CGPoint(x: 105.5, y: 59.5))
в JSON это:
"elements" : [
{
"type" : "MoveTo",
"x" : 106,
"y" : 35
},
{
"x" : 135,
"y1" : 35,
"y" : 47,
"x1" : 106,
"y2" : 31,
"x2" : 135,
"type" : "CubicCurveTo"
},
{
"x" : 105.5,
"y1" : 63,
"y" : 59.5,
"x1" : 135,
"y2" : 59.5,
"x2" : 105.5,
"type" : "CubicCurveTo"
}
],
И все же они рисуются по-разному.
Кто-нибудь может определить, чего не хватает в нижних путях?
Комментарии:
1. Это использование github.com/illyabusigin/UIBezierPathSerialization кстати
Ответ №1:
Оказывается, когда пути считывались из JSON, все кривые были помечены как kCGPathElementAddQuadCurveToPoint
, а не kCGPathElementAddCurveToPoint
.
(Отправил запрос на извлечение в библиотеку)
Комментарии:
1. потраченные впустую около 4 часов на это, использование библиотеки через CocoaPods дает вам устаревшую версию, даже если изменение было зафиксировано
2. @Andrespch да, хотелось бы, чтобы был лучший способ пинговать владельцев репозиториев… :/