【SwiftUI】 タイトルTextの下にサブタイトルTextをつける / Textの間に余白を入れる
この記事の概要
SwiftUIで、.subheadLineプロパティを使って、サブタイトルを設定すると同時に、VStackや Hstackの使い方もマスターします。目次
- この記事の概要
- 目次
- 前回からの変更点
- タイトルTextにサブタイトルを導入しよう
- サブタイトルにHStackViewを導入してViewを分割しよう
- 余白を入れよう
- まとめ
前回からの変更点
よくよく考えたら、ハイキュー!!のロゴってオレンジじゃん.........ということで修正
Text("ハイキュー!!")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(Color.pink)
から、
Text("ハイキュー!!")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(Color.orange)
に修正。
タイトルTextにサブタイトルを導入しよう
まず、ライブプレビュー画面になっている方は、スマホの横に青い円ボタンがあると思うので、それをクリックしましょう。そのボタンをクリックすれば、再生ボタンみたいなアイコンになると思うので、そうなっていれば大丈夫です〜!続いて、ハイキュー!!のテキストをクリックします。ここで注意しなくちゃいけないのは、普通にクリックするのではなく、「⌘commandキー+クリック」でクリックすることです。普通にクリックしても、出てこないので要注意してください。
[図1]クリックすると出てくるリスト |
こんな画面が出てきましたらですね、[Embed in Vstack]をクリックしてあげます。
struct ContentView: View {
var body: some View {
VStack {
Text("ハイキュー!!")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(Color.orange)
}
}
}
そしたら、TextなどがVStackブロックで囲まれると思います。上記コードになっていれば正解です。押し間違えたり、コードが違う!って方は、⌘+Zでやり直しましょう。
上記コードの.foregroundColor(Color.orange)というコードの下に空白行を1行挿入します。そしたら、XCodeの右上にある[+]ボタンをタップしましょう。
[図1-2] +ボタン |
[図1-3]Textを挿入 |
struct ContentView: View {
var body: some View {
VStack {
Text("ハイキュー!!")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(Color.orange)
Text("TO THE TOP")
}
}
}
自動挿入されたTextに「TO THE TOP」を挿入してあげます!
サブタイトルにHStackViewを導入してViewを分割しよう
続いてTO THE TOP textを、⌘command+クリックしてあげます。[図2] Embed in HStack |
struct ContentView: View {
var body: some View {
VStack {
Text("ハイキュー!!")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(Color.orange)
HStack {
Text("TO THE TOP")
}
}
}
}
すると、Text("TO THE TOP")が、ブロック{}で囲まれると思いますので、Text("TO THE TOP")の下に1行空白を開けて、XCode右上の+ボタンを押して、Textを挿入してあげましょう。手順は上に書いた通りです。
私は、絶賛放送中というTextを挿入しました。
struct ContentView: View {
var body: some View {
VStack {
Text("ハイキュー!!")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(Color.orange)
HStack {
Text("TO THE TOP")
Text("絶賛放送中")
}
}
}
}
余白を挿入しよう
[図3] Subheadlineを挿入 |
TO THE TOPと絶賛放送中の二つのTextを用意したら、その二つのラベルをクリックしましょう。前回の記事でも紹介した通り、Textの各種プロパティは右のメニューのドロップダウンでいじることができるので、そこでいじっちゃいましょう。
二つのTextのfontを、.subheadlineに設定します。
HStack {
Text("TO THE TOP")
.font(.subheadline)
Text("絶賛放送中")
.font(.subheadline)
}
設定したら上記コードのような感じになると思いますので、
HStack {
Text("TO THE TOP")
.font(.subheadline)
Spacer()
Text("絶賛放送中")
.font(.subheadline)
}
二つのTextの間にSpacer()を挿入してあげます。
またVStackをクリックした上で、サイドメニューの今、青くなっているボタンを押します。こうすることで、VStackの中の要素(今回はText)の寄せ(左寄せ、中央揃え、右寄せ)などを設定することができます。
[図4] Alignmentの設定 |
import SwiftUI
struct ContentView: View {
var body: some View {
VStack(alignment: .leading) {
Text("ハイキュー!!")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(Color.orange)
HStack {
Text("TO THE TOP")
.font(.subheadline)
Spacer()
Text("絶賛放送中")
.font(.subheadline)
}
}
//ここに .padding()を追加
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
ここまでコードがかけたらもう一息!
Vstackのブロック外に、.padding()プロパティを追加してあげます。.paddingの値を、
[図4] paddingの値の設定 |
ここまでやると、
[図4-2] Paddingを設定したらいい感じ |
こんな感じで、いい感じにできていたら成功です!
お疲れ様でした。
まとめ
今回のコードをまとめると、こんな感じです!
import SwiftUI
struct ContentView: View {
var body: some View {
VStack(alignment: .leading, spacing: 0.0) { //spacingの値は任意
Text("ハイキュー!!")
.font(.title)
.fontWeight(.heavy)
.foregroundColor(Color.orange)
HStack {
HStack {
Text("TO THE TOP")
.font(.subheadline)
Spacer()
Text("絶賛放送中")
}
}
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
個人的に余白自動設定が、SwiftUIで導入されたことがありがたいですね。ナンバリング版SwiftだとパーツひとつひとつにConstraiantsを設定しなくちゃいけなくて、失敗したらすぐにConstraiants矛盾が起きて、レイアウト崩れが起きましたからね〜
前回の記事までにやった内容と比較すると、一気に難易度があがりましたが、一歩一歩着実にプロパティを付与することで、ちゃんと理解できました!
ではまた。
今回学習したこと
- VStackの使い方
- HStackの使い方
- padding(), Spacer()の設定方法
参考資料
・Swift UI Tutorial : Creating and Combining Views - Applehttps://developer.apple.com/tutorials/swiftui/creating-and-combining-views
コメント
コメントを投稿