То, что я придумал, я уверен, не является чем-то революционным или новым. Я знал, что этот метод раньше использовался в других инструментах, особенно при работе с HTML. Чтобы перейти к сути, в основном вы можете использовать предварительный просмотр для компоновки различных стилей созданных вами представлений.
Лучшим примером этого являются цвета для ярлыков в «Решительной жене». Когда я изначально создавал цвета для меток для iOS 12, мне приходилось создавать метки для каждого цвета и просматривать коллекцию в представлении «Спросите Шери». Это позволило мне определить лучшие цвета для текста и границы, чтобы все было видно. С перемещением SwiftUI я добавил новые цвета, такие как розовый и голубой. Вместо того, чтобы создавать метки в приложении и перезапускать каждый раз, когда я вношу изменения, я создал следующий предварительный просмотр, используя новое представление коллекции.
Переход на iOS 14 дал мне доступ к цветным активам вместо стандартных, предоставленных мне ОС. Поэтому я пошел и создал более приглушенные цвета, чтобы они не были такими яркими. Используя новую систему предварительного просмотра, я смог быстро проверить, хорошо ли совпадают выбранные цвета границ и текста.
struct LabelColor_Previews: PreviewProvider { static var previews: some View { let columns: [GridItem] = Array(repeating: .init(.flexible()), count: 2) return LazyVGrid(columns: columns) { ForEach(LabelColor.allCases) { labelColor in Text(labelColor.rawValue) .padding(8) .frame(width: 100) .foregroundColor(labelColor.textColorSU) .background(labelColor.backgroundColorSU) .border(labelColor.borderColorSU, width: 4) .cornerRadius(5) } .padding(2) } .background(Color.lightShades) } }
Другим примером этого является мой предварительный просмотр стилей кнопок. У меня пока только два, но простой VStack может разместить их, так что я могу быстро просмотреть их, не переходя к экрану, который их использует.
struct ButtonStyles_Previews: PreviewProvider { static var previews: some View { VStack { Button("ClassicRctBtnStyle") { print("classic btn touched") } .buttonStyle(ClassicRctBtnStyle()) Button("NavBarBtnStyle") { print("nav btn touched") } .buttonStyle(NavBarBtnStyle()) } .background(Color.lightShades) } }