SVGView - это бесплатная библиотека с открытым исходным кодом, цель которой - открыть силу SVG формата для Apple-платформ. Эта библиотека позволяет загружать SVG-файлы и представлять их содержимое в виде SwiftUI. Кроме того, можно не только отображать готовые файлы, но и обрабатывать пользовательские запросы, взаимодействовать с элементами SVG, менять и анимировать их.
Библиотеку SVGView можно добавить в проект через любой популярный менеджер библиотек:
dependencies: [
.package(url: "https://github.com/exyte/SVGView.git")
]
pod 'SVGView'
github "Exyte/SVGView"
Начать работу с SVGView
можно с нескольких строк кода:
struct ContentView: View {
var body: some View {
SVGView(fileURL: Bundle.main.url(forResource: "example", withExtension: "svg")!)
}
}
Вы можете найти нужную часть SVG-файла использую стандартные идентификаторы для добавления жестов и изменения параметров прямо во время исполнения:
struct ContentView: View {
var body: some View {
let view = SVGView(fileURL: Bundle.main.url(forResource: "example", withExtension: "svg")!)
if let part = view.getNode(byId: "part") {
part.onTapGesture {
part.opacity = 0.2
}
}
return view
}
}
Используя стандартные инструменты SwiftUI можно анимировать загруженное SVG-изображение:
if let part = view.getNode(byId: "part") {
part.onTapGesture {
withAnimation {
part.opacity = 0.2
}
}
}
SVGView позволяет легко добавлять сложные эффекты в ваше приложение. Например, давайте заставим этого Пикачу следить за движением курсора:
var body: some View {
let view = SVGView(fileURL: 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 стандартов: 1.1 (Second Edition), Tiny 1.2 и 2.0. Однако, сейчас проект находится на раннем этапе, но вы можете наблюдать за нашим прогрессом на этой странице. Кроме того, вы можете самостоятельно запустить проект SVGViewTests, чтобы посмотреть отображение каждой конкретной SVG из общего пула тестов.
SVGview является библиотекой, доступной всем пользователям интернета. Пользование и распространение продукта осуществляется бесплатно.