1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/TheAlgorithms-SwiftUI

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_CN.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 10:51 1d25a65

Текст технической направленности из области разработки и тестирования программного обеспечения на русском языке:

Данный текст ссылается на официальные примеры SwiftUI (GitHub) и исследует результаты, которые могут быть полезны для читателя. Предполагается, что читатель имеет опыт разработки на основе языка Swift.

Для вопросов по SwiftUI предлагается присоединиться к QQ-группе SwiftUI: 18552966.

Что нового в SwiftUI?

Скриншоты:

Вид Макет
[Изображение] [Изображение]

Необходимая среда:

  • macOS 10.15;
  • Xcode 11.0;
  • iOS 13.0.

Содержание:

Основные элементы управления

  • Текст: 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()
            })

Посмотреть эффект выполнения

🔝

About

  • Весь код, упомянутый в примерах, доступен в этом репозитории. Рекомендуется скачать и запустить его для просмотра.
  • Если у вас есть какие-либо предложения или лучшие практики использования SwiftUI, мы будем рады услышать их!
  • Если в этих примерах есть ошибки или упущения, пожалуйста, создайте Issue!

Contacts

email : hi@jinxiansen.com

微博 : @晋先森

License

SwiftUI выпущен под лицензией MIT. Подробности см. в файле LICENSE.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/TheAlgorithms-SwiftUI.git
git@api.gitlife.ru:oschina-mirror/TheAlgorithms-SwiftUI.git
oschina-mirror
TheAlgorithms-SwiftUI
TheAlgorithms-SwiftUI
master