SwiftUI
Xcode 11.7 + iOS 13.7の環境でTextFieldを使っていると、日本語入力時に挙動がおかしくなることに気がついた。開発中はハードウェアキーボードで英数字のみ入力していたので気がつかなかった。 実行環境 Xcode 11.7 iOS 13.7 問題の挙動 SwiftUIのTextField…
Buttonの中にTextやImageを内包するとボタンが青色になってしまう。 実行環境 Xcode 11.6 iOS 13.6 問題の挙動 やりたいこととしては、下図のように目のアイコンボタンをタップして、ONの時は赤色、OFFの時はグレーの表示にしたい。 UIの想定としてはONにな…
iOSでテキストデータや画像を共有したい場合、UIActivityViewController を使用します。 SwiftUIではこのUIActivityViewControllerをラッピングして利用すると便利です。SwiftUIでUIActivityViewController を使う方法については「SwiftUIで UIActivityViewC…
NavigationLinkを使って画面Aから画面Bへ遷移して、画面Bから戻ったときにたとえばデータの再読み込みなどなんらかの処理をしたいが、普通にViewを書いていると 戻ってきたときに onAppear が呼ばれない現象が発生する。 本記事では、NavigationLinkを使って…
SwiftUIで List の同じ行に複数の Button を置くと、すべてのButtonのアクションイベントが発生してしまい、それぞれのボタンを個別にタップできない。 本記事では、個別にタップする方法と、よりボタンらしく見せるために ButtonSyle を利用する方法を紹介…
SwiftUIでは直接UIColorを使うことができません。 実行環境 Xcode 11.6 iOS 13.6 UIColor to Color UIColorをSwiftUIのColorに変換するのは簡単です。 let color = Color(UIColor.label) システムで定義されているUIColorの色を使いたい Xcode 11.6時点で不…
iOSで画像やテキストなどを他のアプリへシェアするときには UIActivityViewController を利用する。SwiftUIでも UIActivityViewControllerを使って画像を共有する処理を紹介する。 実行環境 Xcode 11.6 iOS 13.6 UIActivityViewControllerを使って画像を共有…
下図のように 画像を選択 → 画像の切り出し(クロッピング) と複数の画面を連続してモーダル表示させつつ遷移させたい。 モーダルA → モーダルB と連続して遷移できるが、モーダルBがなぜか閉じれなくなってしまう。 実行環境 Xcode 11.6 iOS 13.6 問題の挙動…
ひとつのViewから複数の画面をモーダルへ遷移したい。ボタンを複数用意して、それぞれ対応する画面をモーダル表示させようとしたがうまくいかない。 .sheet() modifierを設定すれば、モーダル表示できることは知っているが、それぞれ異なる複数の画面への遷…
正方形の形のViewを作成できなかった。どうすればよいのか? 実行環境 Xcode 11.6 iOS 13.6 問題の挙動 横いっぱいの正方形のViewを表示したい。具体的には下図のようにしたい。 横いっぱいにするには .frame(maxWidth: .infinity) を指定すれば良い。 impor…
NavigationViewのタイトルには Text() を指定できるが、タイトルに対して font Modifierを設定してもカスタムフォントが反映されなかった。 実行環境 Xcode 11.6 iOS 13.6 問題の挙動 あらかじめFontクラスでカスタムフォントを返す拡張メソッドを追加した。…
Text() のフォント指定にUIFontが使えなかった。どうしたらよいのか? 実行環境 Xcode 11.6 iOS 13.6 問題の挙動 UIFont.futuraMediumFont(ofSize:) のようにカスタムフォントを使いやすくするユーティリティクラスを作成している。 import UIKit extension …
NavigationViewでdisplayModeを指定すると、起動時にアプリがクラッシュした。Xcode 12 beta 2で修正されたようだが、Xcode 11.6であればかならずクラッシュが発生してしまう。 実行環境 Xcode 11.6 iOS 13.6 問題の挙動 これは実行できる。 struct HomeView…