SwiftUIの学習メモ
SwiftUIを使ったiOSアプリ開発を勉強したのでメモ
デザインパターン
基本的なデザインパターンはMVVM
・Model(データ構造)
・View(UIなどの見た目)
・ViewModel(ModelとViewへの処理)
WindowsのWPFではView部分だけXamlファイルなのに対して、 全てSwiftファイルで記述できるので、わかりやすく自由度が高い印象
Viewの書き方
・Viewクラスを継承したクラスを作成する
・bodyプロパティを定義
・bodyの中にはさらにViewのインスタンスを箇条書き
・各Viewに対してModifierを指定してサイズや色などを調整
struct SampleView: View {
var body: some View {
Image("loading") // View
.resizable(resizingMode: .stretch) //Modifier
.aspectRatio(contentMode: .fill)
.frame(width: 200.0, height: 150.0)
.offset(x: 10, y: -40)
Text("text") //View
.padding() //Modifier
}
}
body内のImageやTextなどはSwiftでもとから使えるViewでPrimitive Viewというらしい
他にも自分で定義したViewをbody内に追加することができる
View一つ一つが画面を構成する部品のような感じで、Viewを組み合わせてViewを作り、そのViewをさらに組み合わせて一つの画面を作っていく
WPFに比べると自由度が高い分少しViewが膨らんでる気がする
ViewModel
CombineをimportすることでReactivePropertyのような機能を利用できる
import Foundation
import Combine
class SampleViewModel: ObservableObject {
@Published var textField = ""
private var sampleTask: AnyCancellable?
init() {
sampleTask = self.$textField
.sink() { text in
guard !text.isEmpty else {
return
}
// textFieldが変更された時に実行される処理
}
}
}
Combineの機能についてはそのうち別の記事に
触ってみた感想
Swiftの文法が少し独特なので少し手間取るけれど、MVVMとしての書きやすさはWPFよりも上かも?
かなり直感的に書けるのでコードの可読性も高そうだなという所感
この記事が気に入ったらサポートをしてみませんか?