Что происходит не так с моими UIBezierPaths?

#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 да, хотелось бы, чтобы был лучший способ пинговать владельцев репозиториев… :/