SwiftUI 1-4-6. オブジェクトのタップを捉えるonTapGesture

SwiftUIでは動作を捉えて反応する基本的なオブジェクトは用意されていますが、その他のオブジェクトに反応をつけたい場合があります。オブジェクトに .onTapGesture を追加します。 前回のコードに続けて書く @State var tap_text = “タップ前” を追加 VStackの一番下に **Text( tap_text )**を作成 上記のオブジェクトに .onTapGesture { … } を追加 タップ時の処理として tap_text = “タップしました” を記述 .onTapGestureはそのオブジェクトをタップしたときの反応を書くことができます。ただしButtonやLinkに触れたときのような見た目の変化はありません。.onTapGestureを用いる場合、良いインタラクションのために見た目の変化なども書く必要がありますので注意してください。 コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 import SwiftUI struct ContentView: View { @State var message:String = "" @State var input_text:String = "あいうえお" @State var tap_text:String = "タップ前" var body: some View { VStack { Text( message ) ....

2022-11-21 · 2024-07-28

SwiftUI 1-4-1. ボタンを押す

前節で簡単にSwiftUIの画面作りに触れました。今節では作成したオブジェクトに触れたときの動作、つまり オブジェクトのインタラクション を扱っていきます。今回は Button です。その名の通り押せるボタンを作れます。 SFSwiftUI01-4.swiftpm を開く (サンプルコード) 押して反応するButtonオブジェクトをつくる 1つめのブロックに押した時の処理を書く print( “押しました” ) を追加 print( 値 ) : デバッグコンソールに値を出力 2つめのlabelブロックにボタンの見た目を書く 今回は見た目にTextをつかう コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import SwiftUI struct ContentView: View { var body: some View { VStack { Button { print( "押しました" ) } label: { Text( "ボタン" ) } } } } 結果 printの出力とシミュレータ実行 printは処理が行われているかを確認するのにとても便利ですがXcodeのプレビューでは動作しません(Swift Playgroundsでは動作します)。そこでMacではiOS シミュレータでの実行をお勧めします。 シミュレータや実機での実行...

2022-11-19 · 2024-06-06

SwiftUI 1-3-2. 画像を表示するImageとアセット

SwiftUIで画像を扱いたい時は、Image を用います。前回のTextオブジェクトに並べて画像を表示してみます。 前回のコードに続けて書く 画像を表示する Image オブジェクト. 指定した画像を表示する “CC0_01” を指定する (詳細は後述) まずは画像の大きさがそのまま表示される。サイズ調整のため以下を追加する .resizable() : 大きさの変更を認める .scaledToFit() : 領域の大きさにフィットするサイズに自動調整する Imageオブジェクトは画像データをそのまま表示しようとしますが、.resizable()をつけることで表示サイズの変更ができるようになります。その上で.scaledToFit()を追加すると画面に収まるように大きさを変えてくれます。 コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import SwiftUI struct ContentView: View { var body: some View { VStack { Text( "あいうえお" ) .font( .title ) Image( "CC0_01" ) .resizable() .scaledToFit() } } } 結果 アセットについて サンプルコードにはあらかじめCC0_01という名前の画像が含まれています。 そのため、CC0_01と書けば画像が表示されます。 このようにApp内で利用する外部のファイルを アセット と呼びます。 アセットはAssets.xcassetsの中に含まれています。 もし新たな外部ファイルを利用したい場合、この中に登録していきます。

2022-11-18 · 2023-03-29

SwiftUI 1-3-3. 縦並びレイアウトVStackの応用

すでに紹介したオブジェクトとして VStack があります。VStackは { … } の中に含まれるオブジェクトを縦に並べるオブジェクトになりますが、このようなオブジェクトにも調整を行うことができます。ここではVStackに適切な余白をつけてみます。 前回のコードに続けて書く 縦並びのレイアウトを作る VStack オブジェクト VStackに .padding を追加する .padding( .horizontal, 20.0 ) : VStackの左右に20ptの余白 コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import SwiftUI struct ContentView: View { var body: some View { VStack { Text( "あいうえお" ) .font( .title ) Image( "CC0_01" ) .resizable() .scaledToFit() } .padding( .horizontal, 20.0 ) } } 結果

2022-11-18 · 2022-11-18

SwiftUI 1-3-4. 分割線Divider

コンテンツに分割線を入れると見やすくなることがあります。 SwiftUIで分割線を表示するときは Divider を使います。 前回のコードに続けて書く Text( “あいうえお” )と Image( “CC0_01” ) の間に Divider() を追加する Divider()に .padding を追加、分割線の上下の余白を調整する .padding( .vertical, 20.0 ) : オブジェクトの上下に20ptの余白 .background を設定する Dividerの線の色は背景色で指定する コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import SwiftUI struct ContentView: View { var body: some View { VStack { Text( "あいうえお" ) .font( .title ) Divider() .background( .gray ) .padding( ....

2022-11-18 · 2022-11-18

SwiftUI 1-3-5. 横並びレイアウトHStack

縦に並べるVStackと同様に、すでに紹介した HStack は横方向にオブジェクトを並べます。 前回のコードに続けて書く Text( “あいうえお” )を包む形で HStack を追加する 見た目は前回と変わらない HStackの中にオブジェクトを追加すると横に並ぶようになる ここでは見た目は変わりませんが、次回HStack内にオブジェクトを追加して横並びの効果を確認します。 コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import SwiftUI struct ContentView: View { var body: some View { VStack { HStack { Text( "あいうえお" ) .font( .title ) } Divider() .background( .gray ) .padding( .vertical, 20.0 ) Image( "CC0_01" ) .resizable() .scaledToFit() } ....

2022-11-18 · 2022-11-18

SwiftUI 1-3-6. アイコンを表示するImageとHStackの利用

前回の続きでHStackの中に、別のオブジェクトを追加して横並びの効果を見てみます。追加するものは Image オブジェクトですが、標準で用意されているアイコンの表示を試してみます。 前回のコードに続けて書く Imageオブジェクトをつかってアイコンを作る. HStackの中、Textの後に記述する Image( systemName:”gearshape” ) と書く HStackの効果でTextの右側に並ぶ Image( systemName:アイコンの名前 ) とsystemName:ラベルを使うと、SF Symbols を使うことができます。iOSにマッチした色々なアイコンを簡単に使うことができるため、便利です。 コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import SwiftUI struct ContentView: View { var body: some View { VStack { HStack { Text( "あいうえお" ) .font( .title ) Image( systemName:"gearshape" ) .foregroundStyle( .blue ) ....

2022-11-18 · 2024-07-28

SwiftUI 1-3-7. 隙間を充填するSpacer

前回の続きでHStackの中に、Spacer オブジェクトを追加します。これも既に紹介しているものですがオブジェクトの間に隙間をつくってくれます。 前回のコードに続けて書く Spacer を HStack内のTextとImageの間に追加する Textは左端に、Imageは右端に寄る Spacerも.frameなどを使えばサイズを指定することができる コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import SwiftUI struct ContentView: View { var body: some View { VStack { HStack { Text( "あいうえお" ) .font( .title ) Spacer() Image( systemName:"gearshape" ) .foregroundStyle( .blue ) .font( .title2 ) } Divider() .background( ....

2022-11-18 · 2024-07-28

SwiftUI 1-3-8. スクロールを実現するScrollView

本項の締めくくりとして、スクロールできるオブジェクトを導入したいと思います。スクロールができると画面に収まらない要素を閲覧できるようになります。包んだ要素をスクロールできるようにする ScrollView を紹介します。 前回のコードに続けて書く Image( “CC0_01” )を ScrollView で包む ScrollViewの中のImageを4つに増やす ScrollViewは標準で画面めいっぱいになるように調整されます。その結果、ScrollViewより前に記述してあるHStackやDividerは画面上に寄ります。プレビューを実行状態にすると並んだ画像をスクロールできます。 コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import SwiftUI struct ContentView: View { var body: some View { VStack { HStack { Text( "あいうえお" ) ....

2022-11-18 · 2024-07-28

SwiftUI 1-3-1. 文字を表示するText

前節でSwiftUIでオブジェクトを装飾して部品作りに触れました。今節では基本的なオブジェクトの紹介をしつつ、簡易なApp画面を構築していこうと思います。まずはこれまでも使ってきた Text の紹介です。 SFSwiftUI01-3.swiftpm を開く (サンプルコード) 文字を表示するTextオブジェクトを追加する Textオブジェクトに.fontを追加し、 .title を指定 タイトル用の大きな文字サイズになる コード 1 2 3 4 5 6 7 8 9 10 import SwiftUI struct ContentView: View { var body: some View { VStack { Text( "あいうえお" ) .font( .title ) } } } 結果

2022-11-17 · 2024-06-06