LoginSignup
107
94

More than 1 year has passed since last update.

SwiftUI100本ノック iOS16バージョン

Last updated at Posted at 2022-12-19

SwiftUI100本ノック iOS16バージョン

SwiftUI(と関連知識)を習得するための100本ノックのiOS16バージョンです
「SwiftUIチュートリアルの次に何をすれば良いかわからない」という人向けに作ってみました。
もっと良い解答例があればコメントでどんどん教えてください m(_ _)m

Githubで管理してます。スターください。100knocks-SwiftUI

TODO: iOS16バージョンといいつつ警告が出ているものはなるはやで修正します。
TODO: 難易度順には並んでいないですがなる早で難易度順に並べます。

Xcode Version 14.1
Swift version 5.7.1
シミュレーターはiPhone14でサイズはcommand+1のPhysical Size

かんたん(SwiftUIの簡単な構文だけで実装可能)

1. 画像をリサイズして表示(fit)

150✖︎200サイズに画像をリサイズして表示させてください。
アスペクト比が異なる場合は余白を赤色で表示してください。

画像をリサイズして表示(fit)

解答

2. 画像をリサイズして表示(clip)

150✖︎200サイズに画像をリサイズして表示させてください。
アスペクト比が異なる場合ははみ出た箇所を切り取って表示してください。

画像をリサイズして表示(clip)

解答

参考
【SwiftUI】画像(Image)の使い方
SwiftUIにおけるscaledToFill()とかscaledToFit()とかaspectRatio(_:contentMode:)等の使い分け

3. 画像を丸く切り取る

150✖︎150サイズに画像をリサイズし、丸く切り取って表示させてください。

画像を丸く切り取る

解答

4. 画像を丸く切り取り、枠を付ける

150✖︎150サイズに画像をリサイズし、丸く切り取り、黒い枠を付けて表示させてください。

画像を丸く切り取り、枠を付ける

解答

5. 画像を等間隔で横に並べる

画像を等間隔で横に並べてください。

画像を等間隔で横に並べる

解答

6. NavigationViewを使いラージタイトルを表示する

NavigationViewを使いラージタイトルを表示してください。

NavigationViewを使いタイトルを表示する

NavigationViewを使いラージタイトルを表示する

7. Pickerを表示する

Pickerを使いポケモンを表示してください。

Pickerを表示する

解答

8. TabViewを使って画面を切り替える

TabViewを使って画面を切り替えてください。

TabViewを使って画面を切り替える

解答

9. Buttonが押されたら文字を変える

Buttonが押されたら文字を変えてください。

Buttonが押されたら文字を変える

解答

10. Listを使ってセクションごとに表示する

Listを使ってセクションごとに表示する

Listを使ってセクションごとに表示する

解答

11. 画面遷移時に値を渡す

画面遷移時に値を渡してください。

画面遷移時に値を渡す

解答

12. NavigationViewの戻るボタンを非表示にする

NavigationViewの戻るボタンを非表示にしてください。

NavigationViewの戻るボタンを非表示にする

解答

13. Listのスタイルを変更する

ListのスタイルをPlainListStyleに変更してください。

Listのスタイルを変更する

解答

14. アラートを表示する(その1)

iOS14以前でも使用できる方法でアラートを表示させてください。

SwiftUIでアラートを表示する(その1)

解答

15. アラートを表示する(その2)

iOS15以降で使用できる方法でアラートを表示させてください。

SwiftUIでアラートを表示する(その2)

解答

16. アラートを出し分ける(その1)

ボタン1が押されたらアラート1を、ボタン2が押されたらアラート2を表示してください

アラートを出し分ける(その1)

解答

17. アラートを出し分ける(その2)

ボタン1が押されたらアラート1を、ボタン2が押されたらアラート2を表示してください。
iOS14以下でも使用できる方法です。

アラートを出し分ける(その2)

解答

18. Button内の画像やテキストの色を変えない

Buttonが押されたら文字を変えてください。
Button内の画像やテキストの色を変えないでください。

Button内の画像やテキストの色を変えない

解答

19. SwiftUIでアラートとシートを出し分ける

数字が入力されたらシートを表示してください。
数字以外が入力されたらアラートを表示してください。

SwiftUIでアラートとシートを出し分ける

解答

20. NavigationLinkではなくButtonを押して画面遷移する

NavigationLink内のテキストではなく、Button内のテキストが押されたら画面遷移をしてください。

NavigationLinkではなくButtonを押して画面遷移する

解答

21. 続きを読む。。。ボタンがあるViewを実装する

SwiftUIで続きを読む。。。ボタンがあるViewを実装してください。

続きを読む。。。ボタンがあるViewを実装する

解答

22. Text中の文字の太さや色を変える

Text中の文字の太さや色を変えてください。

Text中の文字の太さや色を変える

解答

23. FunctionBuilderを使ってViewに影をつける

FunctionBuilderを使ってViewに影をつけてください。

FunctionBuilderを使ってViewに影をつける

解答

24. ViewModifierを使ってViewに影をつける

ViewModifierを使ってViewに影をつけてください。

ViewModifierを使ってViewに影をつける

解答

25. リストを編集する

リストを編集してください。

リストを編集する

解答

26. リストのセルをタップするとアラートが表示させる

リストのセルをタップするとアラートが表示させてください。

リストのセルをタップするとアラートが表示させる

解答

27. 画面遷移先のViewから遷移元のメソッドを呼び出す

画面遷移先の View から遷移元のメソッドを呼び出してください。

画面遷移先のViewから遷移元のメソッドを呼び出す

解答

28. ListViewからそれぞれ別のViewに遷移する

ListViewからそれぞれ別のViewに遷移する

ListViewからそれぞれ別のViewに遷移する

解答

29. 複数行のPickerを作成する

複数行のPickerを作成する

複数行のPickerを作成する

解答

30. Sheetを表示する

Sheetを表示する

Sheetを表示する

解答

31. 全画面でSheetを表示する

全画面でSheetを表示する

全画面でSheetを表示する

解答

32. NavigationBarを隠す

TextをNavigationViewの中に入れつつNavigationBarを表示しないでください

NavigationBarを隠す

解答

33. Previewを横向きにする

Previewを横向きにしてください。

NavigationBarを隠す

解答
TODO: 記事の内容が古いからコードに合わせて

34. 端末のシェイクを検知する

端末のシェイクを検知して@Stateを更新してください

NavigationBarを隠す

解答

35. UICollectionViewのようにViewを並べる

UICollectionViewのようにViewを並べてください。
TODO: 警告出てるので直す。

UICollectionViewのようにViewを並べる

解答

参考
Q-Mobile/QGrid

36. アプリ起動時に画面を遷移させる

アプリ起動時に画面を遷移させてください。

アプリ起動時に画面を遷移させる

解答

37. よくあるチュートリアル画面をUIPageViewControllerとSwiftUIで作る

画像のような良くあるウェークスルー画面を実装してください。

アプリ起動時に画面を遷移させる

解答

38. 閉じることができないモーダルを表示する

SwiftUIで閉じることができないモーダルを表示してください。

閉じることができないモーダルを表示する

解答

39. モーダルからフルモーダルを表示する

モーダルからフルモーダルを表示する

解答

40. フルスクリーンモーダルを表示する

フルスクリーンモーダルを表示してください。

フルスクリーンモーダルを表示する

解答

iOS14では簡単に実装できるようになりました。

解答

41. 文字列中にタップ可能なリンクを追加する

文字列中にタップ可能なリンクを追加してください。

文字列中にタップ可能なリンクを追加する

解答

42. GithubのAPIを叩き、リポジトリの情報をリストに表示する(Closure)

GithubのAPIを叩き、リポジトリの情報をリストに表示する(Closure)

GithubのAPIを叩き、リポジトリの情報をリストに表示する(Closure)

解答

参考
Infinite List Scroll with SwiftUI and Combine

43. GithubのAPIを叩き、リポジトリの情報をリストに表示する(Combine)

GithubのAPI( https://api.github.com/search/repositories?q=swift&sort=stars&page=1&per_page=30 )を叩きリポジトリの情報をリストに表示してください。
Combineを使用してください。

GithubのAPIを叩き、リポジトリの情報をリストに表示する(Closure)

解答

参考
Infinite List Scroll with SwiftUI and Combine

44. GithubのAPIを叩き、リポジトリの情報をリストに表示する。一番下までスクロールされたら追加で取得してください。

GithubのAPI( https://api.github.com/search/repositories?q=swift&sort=stars&page=1&per_page=30 )を叩きリポジトリの情報をリストに表示してください。
一番下までスクロールされたら追加で取得してください。

GithubのAPIを叩き、リポジトリの情報をリストに表示する(Closure)

解答

参考
Infinite List Scroll with SwiftUI and Combine

45. GithubのAPIを叩き、リポジトリの情報をリストに表示する。一番下までスクロールされたら追加で取得してください。Indicator も表示してください。

GithubのAPI( https://api.github.com/search/repositories?q=swift&sort=stars&page=1&per_page=30 )を叩きリポジトリの情報をリストに表示してください。
一番下までスクロールされたら追加で取得してください。

1.gif

GithubのAPIを叩き、リポジトリの情報をリストに表示する(Closure)

解答

参考
Infinite List Scroll with SwiftUI and Combine

46. SwiftUIのTextFieldで編集中と編集完了を検知する

SwiftUIのTextFieldで編集中と編集完了を検知する

SwiftUIのTextFieldで編集中と編集完了を検知する

解答

47. SwiftUIのTextFieldで編集中と編集完了を検知する

SwiftUIのTextFieldで編集中と編集完了を検知する

SwiftUIのTextFieldで編集中と編集完了を検知する

解答

48. SwiftUIでAppStorageを使ってUserDefaultの値を監視する

SwiftUIでAppStorageを使ってUserDefaultの値を監視する

SwiftUIでAppStorageを使ってUserDefaultの値を監視する

解答

49. SwiftUIでViewの上にViewを重ねる

SwiftUIでViewの上にViewを重ねる

SwiftUIでViewの上にViewを重ねる

解答

50. SwiftUIでMapを使う。Mapにピンを立てる

SwiftUIでMapを使う。Mapにピンを立てる

SwiftUIでMapを使う。Mapにピンを立てる

解答

51. SwiftUIでImageを長押しするとContextMenuを表示する

SwiftUIでImageを長押しするとContextMenuを表示する

SwiftUIでImageを長押しするとContextMenuを表示する

解答

52. SwiftUIを使ったTODOアプリのサンプル

SwiftUIを使ったTODOアプリのサンプル

SwiftUIを使ったTODOアプリのサンプル SwiftUIを使ったTODOアプリのサンプル

解答

53. SwiftUIでAVAudioPlayerで音楽を再生し、再生終了を検知する

SwiftUIでAVAudioPlayerで音楽を再生し、再生終了を検知する

SwiftUIでAVAudioPlayerで音楽を再生し、再生終了を検知する

解答

54. SwiftUIでモーダルを表示する時に値を渡す

SwiftUIでモーダルを表示する時に値を渡す

SwiftUIでモーダルを表示する時に値を渡す

解答

55. SwiftUIで複数のモーダルをEnumで出し分ける

SwiftUIで複数のモーダルをEnumで出し分ける

SwiftUIで複数のモーダルをEnumで出し分ける

解答

56. @State@Bindingの使い分け

@State@Bindingの使い分け

@Stateと@Bindingの使い分け

解答

57. SwiftUIでBMIを計算し、結果を別のViewで表示する

SwiftUIでBMIを計算し、結果を別のViewで表示する

SwiftUIでBMIを計算し、結果を別のViewで表示する

解答

58. SwiftUIでボタンを押すとポップアップを表示する

SwiftUIでボタンを押すとポップアップを表示する

SwiftUIでボタンを押すとポップアップを表示する

解答

59. SwiftUIでアラートを入れ子にして使うことができない

SwiftUIでアラートを入れ子にして使うことができない

SwiftUIでアラートを入れ子にして使うことができない

解答

60. QGridを使ってCollectionViewを実装する

QGridを使ってCollectionViewを実装する

QGridを使ってCollectionViewを実装する

解答

61. SwiftUIでViewを横スクロールで表示する

SwiftUIでViewを横スクロールで表示する

SwiftUIでViewを横スクロールで表示する

解答

62. SwiftUIでButtonを有効にしたり無効にしたりする

SwiftUIでButtonを有効にしたり無効にしたりする

SwiftUIでButtonを有効にしたり無効にしたりする

解答

63. SwiftUIのTextFieldで表示するキーボードを指定する

SwiftUIのTextFieldで表示するキーボードを指定する

SwiftUIのTextFieldで表示するキーボードを指定する

解答

64. SwiftUIで初めの画面に遷移する(popToRootViewController)

SwiftUIで初めの画面に遷移する(popToRootViewController)

SwiftUIで初めの画面に遷移する(popToRootViewController)

解答

65. SwiftUIでシートを表示し、プッシュ遷移後にシートを閉じる

SwiftUIでシートを表示し、プッシュ遷移後にシートを閉じる

SwiftUIでシートを表示し、プッシュ遷移後にシートを閉じる

解答

66. SwiftUIでListをEditModeにして並び替える

SwiftUIでListをEditModeにして並び替える

SwiftUIでListをEditModeにして並び替える

解答

67. SwiftUIのListでSpacerの部分にもタップ判定をつける

SwiftUIのListでSpacerの部分にもタップ判定をつける

SwiftUIのListでSpacerの部分にもタップ判定をつける

解答

68. SwiftUIのListの中にボタンを複数設置する

SwiftUIのListの中にボタンを複数設置する

SwiftUIのListの中にボタンを複数設置する

解答

69. SwiftUIでSearchBar(TextField)を使って検索する

SwiftUIでSearchBar(TextField)を使って検索する

SwiftUIでSearchBar(TextField)を使って検索する

解答

70. SwiftUIでSearchBar(TextField)にクリアボタンをつける

SwiftUIでSearchBar(TextField)にクリアボタンをつける

SwiftUIでSearchBar(TextField)にクリアボタンをつける

解答

71. SwiftUIでUIActivityViewControllerを表示する

SwiftUIでUIActivityViewControllerを表示する

SwiftUIでUIActivityViewControllerを表示する

解答

72. SwiftUIでActivityIndicatorを表示する

SwiftUIでActivityIndicatorを表示する

SwiftUIでActivityIndicatorを表示する

解答

73. SwiftUIで少しカスタマイズしたActivityIndicatorを表示する

SwiftUIで少しカスタマイズしたActivityIndicatorを表示する

SwiftUIで少しカスタマイズしたActivityIndicatorを表示する

解答

74. SwiftUIでListにButtonを設定してパラメーターの違う画面に遷移する

SwiftUIでListにButtonを設定してパラメーターの違う画面に遷移する

SwiftUIでListにButtonを設定してパラメーターの違う画面に遷移する

解答

75. SwiftUIのTabViewのタブをコードから動的に切り替える

SwiftUIのTabViewのタブをコードから動的に切り替える

SwiftUIのTabViewのタブをコードから動的に切り替える

解答

76. Identifiableに適合していないStructでListを使う

Identifiableに適合していないStructでListを使う

Identifiableに適合していないStructでListを使う

解答

77. SwiftUIでカメラを使う

SwiftUIでカメラを使う

SwiftUIでカメラを使う

解答

78. SwiftUIでスライダーとスクロールを連動させる

SwiftUIでスライダーとスクロールを連動させる

SwiftUIでスライダーとスクロールを連動させる

解答

79. SwiftUIでPHPickerViewControllerを使って画像を選択する

SwiftUIでPHPickerViewControllerを使って画像を選択する

SwiftUIでPHPickerViewControllerを使って画像を選択する

解答

80. SwiftUIでMapViewの中央に十字を用意し、その中央の座標を取得する

SwiftUIでMapViewの中央に十字を用意し、その中央の座標を取得する

SwiftUIでMapViewの中央に十字を用意し、その中央の座標を取得する

解答

81. SwiftUIでMapViewを使い複数の位置情報を選択する

SwiftUIでMapViewを使い複数の位置情報を選択する

SwiftUIでMapViewを使い複数の位置情報を選択する

解答

82. SwiftUIで画像をピンチで拡大する(MagnificationGesture)

SwiftUIで画像をピンチで拡大する(MagnificationGesture)

SwiftUIで画像をピンチで拡大する(MagnificationGesture)

解答

83. SwiftUIで画像をピンチで拡大する(PDFView)

SwiftUIで画像をピンチで拡大する(PDFView)

SwiftUIで画像をピンチで拡大する(PDFView)

解答

84. SwiftUIで画像をピンチで拡大する(UIImageView + UIScrollView)

SwiftUIで画像をピンチで拡大する(UIImageView + UIScrollView)

SwiftUIで画像をピンチで拡大する(UIImageView + UIScrollView)

解答

85. iOSのファイルアプリ(UIDocumentPickerViewController)を開いてドキュメントフォルダに保存したファイルを開く

iOSのファイルアプリ(UIDocumentPickerViewController)を開いてドキュメントフォルダに保存したファイルを開く

iOSのファイルアプリ(UIDocumentPickerViewController)を開いてドキュメントフォルダに保存したファイルを開く

解答

86. SwiftUIでObservableObjectの@publishedなプロパティとBindingをする

SwiftUIでObservableObjectの@publishedなプロパティとBindingをする

SwiftUIでObservableObjectの@publishedなプロパティとBindingをする

解答

87. Swiftのasync,awaitを使ってAPIをフェッチする

Swiftのasync,awaitを使ってAPIをフェッチする

Swiftのasync,awaitを使ってAPIをフェッチする

解答

88. Swiftのasync,awaitを使ってAPIと画像を取得し、全てが揃ってから表示する

Swiftのasync,awaitを使ってAPIと画像を取得し、全てが揃ってから表示する

Swiftのasync,awaitを使ってAPIと画像を取得し、全てが揃ってから表示する

解答

89. SwiftUIでさまざまなデバイスのプレビューを確認する

SwiftUIでさまざまなデバイスのプレビューを確認する

SwiftUIでさまざまなデバイスのプレビューを確認する

解答

107
94
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
107
94