Текст технической направленности из области разработки и тестирования программного обеспечения на русском языке:
Данный текст ссылается на официальные примеры SwiftUI (GitHub) и исследует результаты, которые могут быть полезны для читателя. Предполагается, что читатель имеет опыт разработки на основе языка Swift.
Для вопросов по SwiftUI предлагается присоединиться к QQ-группе SwiftUI: 18552966.
Что нового в SwiftUI?
Скриншоты:
Вид | Макет |
---|---|
[Изображение] | [Изображение] |
Необходимая среда:
Содержание:
Текст: Text.
Текстовое поле: TextField.
Защищённое текстовое поле: SecureField.
Изображение: Image.
Веб-изображение: WebImage.
Кнопка: Button.
Выпадающая кнопка: PullDownButton.
Всплывающая кнопка на основе элементов: ItemBasedPopUpButton.
Навигационная кнопка: NavigationButton.
Презентация кнопки: PresentationButton.
Редактирование кнопки: EditButton.
Вставка кнопки: PasteButton.
Выбор: Picker.
Дата выбора: DatePicker.
Переключатель: Toggle.
Ползунок: Slider.
Шаговый регулятор: Stepper.
Сегментированный элемент управления: SegmentedControl.
Специальный вид: WebView.
UIViewController.
Стеки: HStack, VStack, ZStack.
Список: List.
Прокрутка: ScrollView.
Для каждого: ForEach.
Контейнерные виды: Group, GroupBox, Section, Form.
Архитектурные виды: навигация, переключение, расположение: NavigationView, TabView, HSplitView, VSplitView.
Предупреждения: Alert, Modal, Popover, Sheet, ActionSheet.
Привязки: Binding.
Зависимые от данных представления: State, ObjectBinding, EnvironmentObject.
Значения среды: Environment, EnvironmentValues.
Модели ENavigation: DynamicNavigationDestinationLink.
Настройки: LocalizedStringKey.
Транзакции: Transaction.
Основные жесты: TapGesture, LongPressGesture, DragGesture, MagnificationGesture, RotationGesture.
Комбинированные жесты: SequenceGesture, SimultaneousGesture, ExclusiveGesture.
Пользовательские жесты: AnyGesture. Текст:
«Text» используется для отображения одной или нескольких строк текста, аналогично «UILabel», но более функционально.
Чтобы создать «Text», просто используйте «Text("SwiftUI")». Вы также можете добавить различные свойства к тексту, такие как шрифт, цвет, тень и интервалы сверху, слева, снизу и справа, используя цепную запись. Пример:
Text("SwiftUI")
.foregroundColor(.orange)
.bold()
.font(.system(.largeTitle))
.fontWeight(.medium)
.italic()
.shadow(color: .black, radius: 1, x: 0, y: 2)
TextField:
«TextField» используется для добавления обычных полей ввода, обычно используемых для ввода текста.
Пример:
TextField(self.$name, placeholder: self.nameText, onEditingChanged: { changed in
print("onEditing: \(changed)")
}) {
print("userName: \(self.name)")
self.endEditing(true)
}}
.padding(10)
.frame(height: 50)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20))
SecureField:
«SecureField» обычно используется для ввода паролей, и его использование не отличается от «TextField». Пример и эффект аналогичны «TextField».
Image:
Элемент управления «Image» используется для отображения изображений.
Пример:
Image("icon")
.resizable()
.frame(width: 100,
height: 100,
alignment: .center)
WebImage:
«WebImage» используется для загрузки изображений из сети. Он заменяет существующее изображение после успешной загрузки с помощью «URLSession». Также можно использовать Kingfisher в методе «downloadWebImage».
Пример:
var body: some View {
Image(uiImage: self.uiImage ?? placeholderImage)
.resizable()
.onAppear(perform: downloadWebImage)
.frame(width: 80,
height: 80,
alignment: .center)
.onTapGesture {
print("Tap ")
}
}
Button:
«Button» используется для реагирования на события нажатия.
Пример:
Button(action: {
print("Tap")
}) {
Text("I'm a Button")
}
``` **🔝**
**Toggle** используется для переключения выбранного состояния.
Пример:
```swift
Toggle(isOn: $isOn) {
Text("State: \(self.isOn == true ? "открыто":"закрыто")")
}.padding(20)
🔝
Slider используется для выбора значения из ограниченного диапазона значений.
Пример:
Slider(value: $data.rating)
🔝
Stepper используется для увеличения или уменьшения числового значения.
Пример:
Stepper(value: $value, step: 2, onEditingChanged: { c in
print(c)
}) {
Text("Значение Stepper: \(self.value)")
}.padding(50)
🔝
SegmentedControl (уже не используется) использовался для сегментированного условного выбора.
Пример:
```swift
SegmentedControl(selection: $currentIndex) {
ForEach(0..<items.count) { index in
Text(self.items[index]).tag(index)
}
}.tapAction {
print("currentIndex: (self.currentIndex)")
}
🔝
WebView используется для отображения открытой веб-страницы.
Пример:
struct WebViewPage : UIViewRepresentable {
func makeUIView(context: Context) -> WKWebView {
return WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
let req = URLRequest(url: URL(string: "https://www.apple.com")!)
uiView.load(req)
}
}
🔝
UIViewController используется для представления UIViewController в SwiftUI и открытия View в UIViewController.
Пример: сначала определите:
struct ControllerPage<T: UIViewController> : UIViewControllerRepresentable {
typealias UIViewControllerType = UIViewController
func makeUIViewController(context: UIViewControllerRepresentableContext<ControllerPage>) -> UIViewController {
return T()
}
func updateUIViewController(_ uiViewController: UIViewController, context: UIViewControllerRepresentableContext<ControllerPage>) {
debugPrint("\(#function):\(type(of: T.self))")
}
}
Затем вызовите:
NavigationButton(destination: ControllerPage<UIKitController>()) {
PageRow(title: "UIViewController",subTitle: "Открыть UIViewController")
}
🔝
HStack используется для размещения дочерних представлений в горизонтальном ряду.
Пример:
HStack {
Text("Сделано в Китае.")
Divider() // Просто добавьте линию.
Text("Китайская Народная Республика.")
}
VStack используется для расположения дочерних представлений по вертикали.
Пример:
VStack {
Text("Сделано в Китае.")
Divider() // Просто добавьте линию.
Text("Китайская Народная Республика.")
}
ZStack используется для наложения дочерних представлений и выравнивания их по двум осям.
Пример:
ZStack {
Text("Сделано в Китае.")
Divider() // Просто добавьте линию.
Text("Китайская Народная Республика.")
}
List — это контейнер списка, используемый для отображения столбца данных.
Пример:
List(0..<5) { item in
Text("Hello World !")
}.navigationBarTitle(Text("Список"), displayMode: .large)
``` **Посмотреть эффект выполнения**
[🔝](#Alert_D)
**Modal**
`Modal` используется для отображения представления.
Пример:
```swift
Modal(Text("Modal View"),onDismiss: {
print("View Dismiss !")
})
Посмотреть эффект выполнения
Popover
Popover
используется для отображения представления, стиль которого можно увидеть в результатах выполнения ниже.
Пример:
.popover(isPresented: $showPop, content: {
ImagePage()
})
Посмотреть эффект выполнения
email : hi@jinxiansen.com
微博 : @晋先森
SwiftUI выпущен под лицензией MIT. Подробности см. в файле LICENSE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )