Open6

SwiftUIに入門する

どらどら

プレビューをCmd+クリックでアクションメニューが出てくる

SwiftUI Inspectorを使って変更を加えると、コード側に反映される。面白い。

逆にコード側をCmd+クリックしてもInspectorを開ける

どらどら

画像を丸型で抜いてAppleあるあるのあの画像の縁取りの感じが1行でできるのすごい

どらどら

とりあえず一番最初のチュートリアルは完走した!
Swiftの文法とかは全く学んでないので、結構これはどういうものなんだろう?という疑問がある

テキストスタイルなどの指定の仕方

Text("Turtle Rock").font(.title)

.title はどこでどう定義されているのか?

定義へ移動したら

@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
extension Font {

    /// A font with the large title text style.
    public static let largeTitle: Font

    /// A font with the title text style.
    public static let title: Font
    ...

と出てきたので、extension?という機構を使っている?

フォーマット

VSCodeみたいにonSaveで整形したいんだけど、Xcode標準機能ではない…?
Swift-formatとかを使うらしいけど、簡単にXcodeと連携する方法はないのか?

カンマの省略

ちゃんと改行してれば ; なしで連ねて書けるのなんか変な感じ
これは結果として配列となって渡されるイメージであってるんだろうか?

VStack(alignment: .leading) {
    Text("Turtle Rock")
        .font(.title)
    HStack {
        Text("Joshua Tree National Park")
        Spacer()
        Text("California")
    }
    .font(.subheadline)
    .foregroundColor(.secondary)
    
    // 改行するなら何もなしでOK
    Divider()
    
    // 改行しない場合は ; で区切る
    Text("About Turtle Rock").font(.title2); Text("Descriptive text goes here.")
}

プレビュー体験が良い

エミュレータとかじゃないからか(?)、めっちゃ起動や修正の反映早いし、とても使いやすい最高

どらどら

続きをやった
https://developer.apple.com/tutorials/swiftui/handling-user-input

star.fillstarts.fill って書いてて1時間とかした…。
ちゃんと両方のプレビューを整備しなきゃね。

Group{ ... }.previewLayout(.sizeThatFits)  // サイズが最小限になるように自動調整
Group{ ... }.previewLayout(.fixed(width: 100, height: 100))  // サイズ固定

SwiftUIのDebug Previewのやり方

公式の説明がわかりづらくて沼った
実際は、現在のXcode 12.3では再生マークを右クリック→Debug Previewを選ぶ

コンソール出力を見る場合は、View→Debug Area→Activate Console。
UI周りはDebug View Hierarchy。各コンポーネントの値とかは見れない…?

printデバッグ

現状、Xcode 12.3ではバグでprintデバッグがSwiftUIのDebug Previewで出力されないらしい
そんなバグある???ちなみにエミュレータを使うとちゃんとprintされる…

https://stackoverflow.com/questions/64678359/cannot-print-to-console-in-xcode
https://developer.apple.com/forums/thread/668102