iOS 애플리케이션 개발 -2SwiftUI
개요
SwiftUI의 사용 방법을 요약했습니다.
# Swiftのバージョン確認
$ swift --version
swift-driver version: 1.26.9 Apple Swift version 5.5 (swiftlang-1300.0.31.1 clang-1300.0.29.1)
Target: x86_64-apple-macosx11.0
# Xcodeのバージョン確認
$ xcodebuild -version
Xcode 13.0
Build version 13A233
# 対話型実行環境を起動
$ swift
Welcome to Apple Swift version 5.4.2 (swiftlang-1205.0.28.2 clang-1205.0.19.57).
Type :help for assistance.
1> print("Hello Swift")
Hello Swift
`control` + `D` => 停止
SwiftUI 소개
SwiftUI is a modern way to declare user interfaces for any Apple platform. Create beautiful, dynamic apps faster than ever before.
인용자 https://developer.apple.com/tutorials/swiftui
Stacks
HStack
컨텐츠 수평 정렬
HStack {
Text("こんにちは!")
Text("田村たいようです!")
}
VStack
컨텐츠 수직 정렬
VStack {
Text("こんにちは!")
Text("田村たいようです!")
}
상태 관리
@State
import SwiftUI
struct ContentView: View {
@State private var greeting: String = "おはよう!"
// @State private var プロパティ名: 型 = 初期値
// 型には、基本型(String,Bool,...)とStruct型を指定可能
var body: some View {
VStack {
GreetingText(greeting: $greeting)
// @Stateで宣言されたプロパティは`$`をつけて渡す
// 子View(引数: $プロパティ)
Button(action: { self.changeGreeting() }) {
Text("切り替える")
}
}
}
func changeGreeting() {
if greeting == "おはよう!" {
greeting = "こんばんは!"
} else {
greeting = "おはよう!"
}
}
}
struct GreetingText: View {
@Binding var greeting: String
// `@Binding` : 他のViewの@Stateで宣言されたプロパティを参照・変更する
// @Binding var プロパティ名: 型
var body: some View {
Text(greeting)
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
@ObservedObject
@State
에 카테고리를 지정해도 더 이상 그려지지 않습니다.따라서 감시 클래스의 상태를 다시 그리려면 @ObservedObject
속성을 선포합니다.import SwiftUI
struct ContentView: View {
@ObservedObject var greeting: Greeting = Greeting()
var body: some View {
VStack {
GreetingText(greeting: greeting)
// 子ビューには、インスタンスをそのまま渡せばよい
Button(action: { self.changeGreeting() }) {
Text("違う挨拶で!")
}
}
}
func changeGreeting() {
if greeting.text == "おはよう!" {
greeting.text = "こんばんは!"
} else {
greeting.text = "おはよう!"
}
}
}
struct GreetingText: View {
@ObservedObject var greeting: Greeting
var body: some View {
Text("\(greeting.firstName)さん、\(greeting.text)")
.padding()
}
}
class Greeting: ObservableObject {
@Published var firstName: String = "たいよう"
@Published var text: String = "おはよう!"
// 監視対象となるプロパティを`@Published`で宣言
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
@EnvironmentObject
@EnvironmentObject
에서 전체 참조/갱신 값을 적용한다고 선언합니다.アプリ名App.swift
@main
struct アプリ名App: App {
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(クラス名())
}
}
}
ContentView.swift
import SwiftUI
class クラス名: ObservableObject {
@Published var プロパティ名: 型 = 初期値
// ...
}
struct ContentView: View {
@EnvironmentObject var プロパティ名: クラス名
var body: some View {
// ...
}
}
struct 別のView: View {
@EnvironmentObject var プロパティ名: クラス名
var body: some View {
// ...
}
}
이미지 디스플레이
이미지 셀 표시
참고 문헌
Reference
이 문제에 관하여(iOS 애플리케이션 개발 -2SwiftUI), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/taiyou/articles/ce3f511d782594텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)