mota memo

毎日Swift

Inheritedの設定

SwiftUIでのInherited(=遺伝性、受け継ぐ)の設定方法

XcodeのインスペクタではFont、Weight、Colorの設定を行うことが可能。

その設定の中に「Inherited」という選択肢が存在する。

Font、Weight、ColorのすべてをInheritedに設定

 

Inheritedを選択することで、言葉の通り設定を受け継ぐことが可能となる。

例えば、以下のサンプルAではVStackにfontを指定しており、すべてのテキストがラージサイズで表示されている。

サンプルA



また、サンプルBのように1部のテキストのみ設定を変更することも可能。

サンプルB
土曜日に.blue、日曜日に.redを設定

ドットシンタックス

ドット(.)でコードを省略する

SwiftUIでは.font(.title)のように「.」が付いているものが多く存在する。

サンプルコード

struct ContentView: View {
var body: some View {
Text("こんにちは")
.font(.title)
.fontWeight(.thin)
}
}

上記の場合、.titleはFont.titleを省略して書かれている。

「.」を入力するだけで入力補完が働き、ソースコードを書く作業を効率化することが可能。

このような書き方をドットシンタックスと呼ぶ。

Computed property(計算型プロパティ)

プロパティとは

日本語では「属性」や「性質」などと訳される。  
IT分野ではオブジェクト指向の用語として扱われることが多く、  
クラスや構造体などで定義することができる定数や変数を指す。  

 

Computed property(計算型プロパティ)

値を保持することなく、インスタンスが生成される度に他のプロパティの値を取得し設定するプロパティ。値の返却と設定にget/setを用いる。(以下、サンプルコード)

 

returnを省略した変数
var num: Int {
4 * 2
}
print(num)

 

上記のコードではget{}が省略されており、値(num)の取得のみが可能なリードオンリーの変数を定義している。

 

getを省略しない書き方
var num: Int {
get {
return 4 * 2
}
}

 

get/setの書式
var 変数名: 型 {
get {
ステートメント
return 値
}
set(引数) {
ステートメント
}
}

リードオンリーだけではなく、変数に値を設定できる書き方。

setブロックでは引数で受け取った値を保存するが、変数の値としての保存は行わない。

このような書式をComputed propertyと呼ぶ。

 

タプル(tuple)の使い方

タプル(tuple)とは

複数の構成要素からなる組を総称する一般概念。(Wikiより)

 

Swiftでのタプルの使い方

タプルを使用することで複数の値を1つの変数で扱うことが可能。

また、異なる型の値を組み合わせることも可能。

 
タプルの例
var weather = ("sunny", "rain")
var season = ("spring", "summer", "autumn", winter)
var age = ("18", 25, "37")
 
タプルの型指定
var weather: (String, String) = ("sunny", "rain")

var season: (String, String)
season = ("summer", "winter")

var age: (String, Int, "String")
age = ("18", 25, "37")
 
タプルの型推論
// 型推論によって型が決まる
var age = ("26", 32)
// 代入する値の型が違うのでエラー
age = ("19", "58")
 
ラベル付きのタプル
var season = (summer: "夏", tempreture: 35)
print("\(season.summer)の気温は\(season.tempreture)度となる。")
// 夏の気温は35度となる。
 
タプルにインデックス番号でアクセス
var age = (7, 11, 13)
print(age.2) // 13

Xcodeのコードを折りたたむ

手順

1.Xcodeの設定(Settings…)を開く

2.設定 > Text Editing > Code folding ribbonをチェック

 

結果

設定前(左) 設定後(右)

 

実際に折りたたまれている状態

 

宣言的UIを使用する上ではソースが折りたためることのメリットは大きいと感じた。

全体の行数が減り、長いコードの概要が素早く把握が可能に。

ただ、SwiftUI初学者(私含め)は慣れるまでに時間がかかりそう…