Описание
SVGView — это библиотека для работы с SVG, написанная на SwiftUI и разработанная для платформ Apple. Основная задача проекта заключается в полном раскрытии мощи SVG на этих платформах. Библиотека способна парсить SVG-файлы и представлять их содержимое в SwiftUI, обеспечивая возможность не только рендеринга SVG, но и добавления интерактивности, работы с пользовательским вводом и анимации элементов.
Библиотека предоставляет простые средства для использования SVG с всего лишь несколькими строками кода. Например, для рендеринга SVG в виде представления достаточно создать структуру ContentView, как показано ниже:
struct ContentView : View {
var body : some View {
SVGView(contentsOf: Bundle.main.url(forResource: «example», withExtension: «svg»)!)
}
}
SVGView также позволяет изменять различные параметры элементов, такие как цвет, обводка и обработчики жестов. Например, можно создать кружок и задать ему цвет и обводку следующим образом:
let circle = SVGCircle(cx: 30, cy: 30, r: 30)
circle.fill = SVGColor.black
circle.stroke = SVGStroke(fill: SVGColor(hex: «ABCDEF»), width: 2)
circle.onTapGesture { print(«tap») }
Компонент SVGView обеспечивает доступ к элементам SVG-файла для добавления жестов и изменения их свойств во время выполнения. Например, можно добавить обработчик для изменения прозрачности элемента при нажатии.
Программа также поддерживает анимацию с использованием стандартных средств SwiftUI. Например, частью кода может быть:
if let part = view.getNode(byId: «part») {
part.onTapGesture {
withAnimation {
part.opacity = 0.2
}
}
}
Библиотека SVGView позволяет добавлять сложные эффекты и анимацию на основе жестов, что позволяет создавать более интерактивные и динамичные интерфейсы. Например, можно заставить изображение следовать за движениям пальца:
var body : some View {
let view = SVGView(contentsOf: Bundle.main.url(forResource: «pikachu», withExtension: «svg»)!)
let delta = CGAffineTransform(translationX: getEyeX(), y: 0)
view.getNode(byId: «eye1»)?.transform = delta
view.getNode(byId: «eye2»)?.transform = delta
return view.gesture(DragGesture().onChanged { g in self.x = g.location.x })
}
Библиотека стремится предоставить 100% поддержку всех стандартов SVG, включая SVG 1.1 (Второе Издание), Tiny 1.2 и 2.0. Однако данная версия еще находится на начальной стадии развития, и пользователи могут следить за прогрессом на специальной странице.
Для тестирования библиотеки предоставлены SVG-сценарии, которые помогают обеспечить стабильную работу с различными функциями SVG.
SVGView требует среды выполнения:
— iOS 14+,
— watchOS 7+,
— macOS 11+,
— Xcode 12+.
Установка библиотеки SVGView осуществляется через менеджеры пакетов:
— Swift Package Manager: `.package(url: «https://github.com/exyte/SVGView.git»)`
— CocoaPods: `pod ‘SVGView’`
— Carthage: `github «Exyte/SVGView»`.
Эта библиотека будет полезна разработчикам, которые ищут возможности изображения векторной графики с поддержкой интерактивности на платформах Apple, таких как приложения для iOS и macOS.
Если вы обнаружили ошибку, пожалуйста, уведомите нас — выделите текст с ошибкой и нажмите клавиши Ctrl+Enter. Отключите блокировщик рекламы, если после нажатия комбинации кнопок не срабатывает всплывающее окно.