xcode

iOS13でアプリ名のローカライズがおかしくなる問題

日本とと英語に対応したアプリを作成していて開発メンバー向けに配布したところ「iPhoneのホーム画面に表示されるアプリ名を正式版にして欲しい」と連絡が来た。 そのとき実際にはアプリ名を設定済みでSimulatorでも検証機のiPhone7(iOS12.4.1)でもアプリ名の表示を確認していた。 iPhoneのホーム画面に表示されるアプリ名のローカライズ InfoPlist.string という Strings File を作成 XcodeProjectのLocalizations設定 デフォルトのEnglishに加えて、+ からJapaneseを追加。 このときローカライズ対応するファイルを指定しないと追加されないので、あらかじめ InfoPlist.string を作成しておく。 必要に応じて Use Base Internationalization をチェックするとBaseも追加される。 ローカライズに対応したファイルはXocde上では1つのファイルが折りたたまれたように表示されるが 実体は言語毎にディレクトリが作成されて内包されている。 en.lproj/InfoPlist.

ios

iOS13のFontFamilyName

iOS8系でフォントの一覧 iOS9系でフォントの一覧 iOS10系でフォントの一覧 iOS11系でフォントの一覧 iOS12系でフォントの一覧 iOS13系でフォントの一覧 取得方法 familyNameからfontNameを取得する。前回かより少し変更しました。 UIFont.familyNames .sorted { $0.compare($1) == .orderedAscending } .flatMap { UIFont.fontNames(forFamilyName: $0).sorted { $0.compare($1) == .orderedAscending } } .forEach { print($0) } 確認環境 iPhone 11 Pro

xcode

Xcode11 の Single View App をiOS12以前に対応させる

Xcode11で Single View App を Swift Storyboard の設定で作成して、iOS10系以降をサポートする設定にした。 ビルドすると沢山エラーが出た。 AppDelegate.swift と SceneDelegate.swift で、iOS13からavailableになったクラスが使用されているため。 赤丸が点いた箇所、画像の AppDelegate.swift ではfuncの宣言箇所で @available(iOS 13.0, *) を書く(赤丸をクリックすると自動で挿入してくれる)。 SceneDelegate.swift は class SceneDelegate