//tips
//撮影の後でボタンをタップすると写真を画面に表示する機能を追加
撮影の後でボタンをタップすると写真を画面に表示する機能を下記のコードで追加した。現状のままでは画像の縦横比が変化して、画像が潰れてしまうこともあるから。
import Foundation
import UIKit
extension UIImage{
func redraw() -> UIImage{
let format = UIGraphicsImageRendererFormat()
format.scale = 1
return UIGraphicsImageRenderer(size: size, format: format)
.image{ context in
draw(in: CGRect(origin: .zero, size: size))
}
}
}
これ追加に加えてImagePickerにも下記の二つのプロパティなどを追加した。
@Binding var image:Image?
@Binding var isPicking:Bool
@Bindingとは親となるUI部品にアクセスできるようになるもので、bodyプロパティを持つUI部品が親、そのbodyプロパティの中に配置されたUI部品が子となる。
ContentView構造体で見ると、
struct ContentView: View {が親のUI部品で、ImagePicker(image: $image, isPicking:$isPicking)が子のUI部品となる。
ここではスクリプトをまたぎ、ContentView構造体にある@State var Imageを、ImagePicker構造体@Binding var Imageで参照している。
というのも、親であるContentView構造体は画面上に写真を表示するimageプロパティを持っているが、写真そのものは、子であるImagePickerによって取得される。これによりContentView構造体はImagePickerから画像を受け取らなければならないのである。
このように参照型の機能を値型の構造体で実現したい時に@State/@Bindingの組み合わせを使う。
また、@Stateで宣言された変数を以下のコードで反映する場合は$マークを変数の前につけると、更新のたびに値が反映される。
//起動画面の作成
左下プラスボタンからLaunchScreen.storyboardを選択し、view as iPhoneと記載されている部分で見やすさの調整を行う。画面はiphone以外の部分を2本指でドラッグすることで表示位置を調整することができる。
toolbarを下部に挿入。次にview controllerを選択し、メニューから、editor→embed in→navigation controllerを選択。さらにResolve Auto Layout IssuesボタンからAdd Missing Constraintsを選択。
https://qiita.com/zigenin/items/b158439e6c4bd4c48d75
こうするとアプリ起動時に白い画面が表示される。
//外国語対応アプリ
iPhoneの言語設定により、アプリ言語が自動的に切り替わるようにする。
新規アプリを作成し、表示テキストをhelloに修正。
日本語を表示を設定するために、LocalizationAppのProjectからLocallizationsのプラスボタンを押す。
contentviewに他言語対応コードを追加。
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
Group{
ContentView()
.environment(\.locale, Locale(identifier: "en"))
ContentView()
.environment(\.locale, Locale(identifier: "ja"))
}
}
}
左下プラスボタンでfileを選択し、resourceからstrings fileを選択。localizableファイルを作成。
localizableファイルを多言語化の対象にするために、localizable.stringsを選択し、右クリックでshow file inspectorを表示。localizeボタンをクリック。
最新のswiftでは、初期時にはlocalizationsにはファイルが追加されておらず、ナビゲータエリアの各ファイルからshow file inspectorで追加する必要がある。
Localizable.stirngに”キー名 = “ローカライズされた”文字列;を追加。
"Hello" = "こんにちは";
プレビューで他言語化できたか確認。
続いて、アプリ名を他言語化するために、新しいファイルを作成し、ローカライズ。
CFBundleDisplayname = "日本語アプリ";
コードを追加。CFBundleDisplayname = "アプリ名”;で表示される。
これは設定されている言語環境に応じてアプリ名の表記が自動的に切り替わる。
//Apple Developer Program の新規登録完了
Appleに連絡したところ、Apple Developer Programの登録は完了していたよう。よかった。
サポートデスクから下記メール回答がきた。随時セッティングを行う予定。
—————————————————————————————————————
この度は、Apple Developer Program の新規登録に関してApple Developer Program Support へお問い合わせいただき、誠にありがとうございます。
お調べしましたところ、Apple Developer Program 個人メンバーシップ (ご注文番号 xxxxxxx | ご登録ID xxxxxxxxx) の登録審査は完了しており、9月25日より年間契約が開始となっております。
ご参考まで、今後の作業にご利用いただくこととなるリンクとガイドをご案内いたします。
* Xcode Help(英語)
https://help.apple.com/xcode/mac/current/#/
* Xcode ガイド (サイトは日本語、記事は英語)
https://developer.apple.com/jp/support/xcode/
* Developer Account ヘルプ(日本語)
https://help.apple.com/developer-account/?lang=ja#/
* App Store Connect ヘルプ(日本語)
https://help.apple.com/app-store-connect/?lang=ja#/
日本語に翻訳されたガイドを参照する際は、下記のリンクをご利用ください。日本語に翻訳されたドキュメント等の一覧となっています。
https://developer.apple.com/jp/documentation/
以下のサイトが、特にご利用頂くオンライン上のページとなっております。
1) App Store Connect:アプリ、契約、税金と銀行の情報、売上レポートなどの管理を行うことができます。
https://appstoreconnect.apple.com/login
2)Developer Account:最新の規約の確認、アカウントの更新作業などを行う事が出来ます。
https://developer.apple.com/account/
今後、Apple Developer Program に関してご質問等ございましたら、以下のお問い合わせフォームをご利用くださいませ。
https://developer.apple.com/jp/contact/