Красивые гистограммы всего в нескольких строках кода
SwiftUI — это инновационный, исключительно простой способ создания пользовательских интерфейсов для всех платформ Apple с помощью Swift. Создавайте пользовательские интерфейсы для любого устройства Apple, используя всего один набор инструментов и API.
Благодаря декларативному синтаксису Swift, который легко читать и естественно писать, SwiftUI без проблем работает с новыми инструментами проектирования Xcode, обеспечивая идеальную синхронизацию вашего кода и дизайна.
SwiftUI использует декларативный синтаксис, поэтому вы можете просто указать, что должен делать ваш пользовательский интерфейс. Ваша первая строка кода SwiftUI — это уже самый мощный код пользовательского интерфейса, который вы когда-либо писали.
Цель этой статьи — построить гистограммы с помощью SwiftUI. Мы будем использовать сегментированное окно выбора, чтобы связать различные формы гистограмм.
Если вы хотите изучить ARKit 3 от новичка до уровня эксперта, нажмите здесь, чтобы пройти курс, и вы также получите скидку 97%.
Если вы увлечены изучением мобильной разработки для iOS и хотите вывести свои навыки разработки для iOS на новый уровень, Core Data with CloudKit framework должен быть в верхней части вашего списка. Нажмите здесь, чтобы пройти курс, а также вы получите скидку 97%.
Изучите SwiftUI с нуля, нажмите здесь, чтобы получить курс, потому что в этом курсе мы собираемся создать множество приложений с использованием SwiftUI, таких как клон Facebook, приложение News, приложение Notes и многое другое.
Подпишитесь на мой канал Youtube, чтобы узнать больше о Swift, SwiftUI и разработке для iOS. Я ежедневно выкладываю видео о Swift и разработке под iOS.
Начиная
Откройте Xcode и создайте новый проект Xcode. В разделе шаблонов iOS выберите Приложение для одного просмотра и нажмите Далее.
Введите название продукта и выберите SwiftUI в качестве пользовательского интерфейса. Нажмите «Далее» и создайте его на своем рабочем столе.
Вот что вы увидите, когда закончите настройку.
По умолчанию файлы представлений SwiftUI объявляют две структуры. Первая структура соответствует протоколу View
и описывает содержимое и макет представления. Вторая структура объявляет предварительный просмотр для этого представления.
Прежде чем реализовать линейчатую диаграмму в SwiftUI, давайте сначала посмотрим, что такое оболочка свойств.
Что такое обертка госимущества?
SwiftUI использует оболочку свойств @State
, чтобы мы могли изменять значения внутри структуры, что обычно недопустимо, поскольку структуры являются типами значений. Когда мы помещаем @State
перед свойством, мы фактически перемещаем его хранилище из нашей структуры в общее хранилище, управляемое SwiftUI.
Это означает, что SwiftUI может уничтожать и воссоздавать нашу структуру всякий раз, когда это необходимо (а это может происходить часто), без потери состояния, которое она хранила.
Реализация
Сначала нажмите Command + N, чтобы создать новый файл SwiftUI View
. Вызовите файл BarView
и вставьте следующий код в BarView.
struct BarView: View { var value: CGFloat = 0 var week: String = "" var body: some View { VStack { ZStack(alignment: .bottom) { Capsule().frame(width: 30, height: value) .foregroundColor(Color( colorLiteral(red: 0.6666070223, green: 0.6667048931, blue: 0.6665855646, alpha: 1))) Capsule().frame(width: 30, height: value) .foregroundColor(Color(.white)) } Text(week) } } }
В приведенном выше коде у нас есть две переменные: value
и week
. Первая переменная отслеживает высоту Capsule()
, а вторая показывает неделю.
Затем мы построили VStack
, чтобы добавить вид по вертикальной линии. Затем у нас есть одно ZStack
— представление, которое накладывает свои дочерние элементы, выравнивая их по обеим осям. Внутри ZStack
у нас есть две капсулы (Capsule()
— это struct
форма, выровненная внутри рамки представления, содержащего ее) для отображения гистограммы.
Вернитесь к своему contentview .swift
файлу и вставьте следующий код.
struct ContentView: View { @State private var pickerSelectedItem = 0 @State private var dataPoints: [[CGFloat]] = [ [50, 100, 150], [150, 100, 50], [100, 50, 150] ] var body: some View { ZStack { Color.blue.edgesIgnoringSafeArea(.all) VStack { Text("BAR CHART") .font(.system(size: 28)) .fontWeight(.medium) Picker(selection: $pickerSelectedItem, label: Text("")) { Text("Weekly").tag(0) Text("Monthly").tag(1) Text("Yearly").tag(2) }.pickerStyle(SegmentedPickerStyle()) .padding(.horizontal, 24) HStack(spacing: 8) { BarView(value: dataPoints[pickerSelectedItem][0], week: "D") BarView(value: dataPoints[pickerSelectedItem][1], week: "D") BarView(value: dataPoints[pickerSelectedItem][2], week: "D") }.padding(.top, 24) .animation(.default) } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
В приведенном выше коде у нас есть две @State
переменных: pickerSelectedItem
и dataPoints
. Используя эти переменные, мы настраиваем гистограмму.
Затем мы строим ZStack
внутри ZStack
, где у нас есть VStack
. В VStack
мы настроили Text
, Picker
, BarView
и некоторую анимацию по умолчанию для BarView.
Сборка и запуск
Заключение
Вот и все. Надеюсь, вам понравился этот материал, и вы научились создавать анимированные гистограммы в SwiftUI.
Дополнительные ресурсы
Если вы хотите изучить ARKit 3 от новичка до уровня эксперта, нажмите здесь, чтобы пройти курс, и вы также получите скидку 97%.
Если вы увлечены изучением мобильной разработки для iOS и хотите вывести свои навыки разработки для iOS на новый уровень, Core Data with CloudKit framework должен быть в верхней части вашего списка. Нажмите здесь, чтобы пройти курс, а также вы получите скидку 97%.
Изучите SwiftUI с нуля, нажмите здесь, чтобы получить курс, потому что в этом курсе мы собираемся создать множество приложений с использованием SwiftUI, таких как клон Facebook, приложение News, приложение Notes и многое другое.
Подпишитесь на мой канал Youtube, чтобы узнать больше о Swift, SwiftUI и разработке для iOS. Я ежедневно выкладываю видео о Swift и разработке под iOS.