CFBundleShortVersionStringをLaunchStoryboardにUILabelテキストとして表示する方法はありますか?インクリメントするたびに手動で入力する必要はありませんか?私はコードでそれを行う方法を知っていますが、LaunchStoryboardが表示されている間はコードを実行することはできません。
は、Xcodeの変数を通して、それは可能ですか?LaunchStoryboardにCFBundleShortVersionStringを表示するにはどうすればよいですか?
答えて
バージョン&を更新するためのスクリプトを作成しました。余分なファイルを使用せずに、最初の回答に基づいてLaunchScreen.storyboardのビルドラベルを作成しました。残念なことに、Clemens Brockschmidtの解決策は、構文エラーと誤ったパスのために動作しません。
アイデンティティ・インスペクタ・ペイン - >ドキュメント - >ラベルで、ラベルに「APP_VERSION」という名前を付けるようにしてください。
また、「バンドルリソースのコピー」フェーズ前にスクリプトを作成します。 XCodeの9(スウィフト4)で/ binに/ SH::
そして、ここでシェルとの最終的な作業のスクリプトです
# ON/OFF Script Toggle (script ON with #, script OFF without #)
exit 0
# Increment build number
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
# Output version & build numbers into a label on LaunchScreen.storyboard
versionNumber=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}")
sed -i bak -e "/userLabel=\"APP_VERSION\"/s/text=\"[^\"]*\"/text=\"Version: $versionNumber Build: $buildNumber\"/" $PROJECT_DIR/>>>CHANGE ME<<</Base.lproj/LaunchScreen.storyboard
注: '< < < MEを変更>>>は、' プロジェクト名です。
BONUSビルド番号インクリメンタとON/OFFスクリプトの切り替えが含まれています。何か問題がある場合、またはこれがあなたのために働くかどうかを教えてください。
編集
起動画面を動的にする方法はありません。代替が
前の回答
以下の通りである
あなたはLaunchScreen.xibにごinital VCが同様にし、その中でなければならないなど、あまりにもローカライズといい を動作しません。ラベルを作ってください。
ここでViewControllerでは、NSBundleメソッドを使用して情報plistにアクセスし、その値を設定できます。我々はすべて知っているようにあなたが
let appVersion = NSBundle.mainBundle().infoDictionary["CFBundleVersion"];
myLabel.text = "\(appVersion)"
をしたい場合、これは中か何かの起動画面から最初のVCへの移行がスムーズにし、バージョンコードのアニメーションで自然に見えるでしょう、あなたは起動画面でコードを置くことができません。そして、残念ながら(あなたが前処理は、ヘッダファイル内の値とのInfo.plistことができる方法に類似)の起動画面でラベルのテキストのための変数を使用するための組み込みの方法はありません。
目的を達成するために使用できる唯一のオプションは、LaunchScreen.storyboardファイルを更新する独自のスクリプトを作成し、そのスクリプトをターゲットのカスタムビルドフェーズとして追加することです。
これを簡単にするために、Info.plistのプリプロセッサファイルを使用するようにターゲットを設定します。これで作業が完了したら、LaunchScreen.storyboardファイルを処理するためにスクリプトで質問することができる別個の単純なヘッダーファイルが作成されました。
がInfo.h
という名前のファイルを作成し、プロジェクトのルートに追加します。
はここに完全なソリューションです。
#define APP_VERSION 2.6 // Update this version as needed
今Xcodeでプロジェクトのターゲットを選択し、[全般]タブに移動します。
は、次の行を追加します。バージョンの値を変更するには、そこにある番号をAPP_VERSION
に変更します。
[ビルド設定]タブを選択します。 Info
で検索してください。 [梱包]セクションのPreprocess Info.plist File
をYes
に設定します。また、Info.plist preprocessing Prefix File
をInfo.h
に設定します。
ビルドを行うと、Info.plistのCFBundleShortVersionString
の値はInfo.hファイルの値に設定されます。
お使いの起動画面のストーリーボードを選択し、バージョン番号が含まれていますラベルを選択:次の操作を行い、合わせて更新の起動画面ファイルにラベルを取得するために
。アイデンティティインスペクタペインを表示します。 Label属性にAPP_VERSION
と入力します。ストーリーボードファイルを見ると、ラベルのXMLにuserLabel
という属性が表示され、値はAPP_VERSION
になります。
プロジェクトターゲットに戻り、[ビルドフェーズ]タブを選択します。 +アイコンをクリックして、新しいスクリプト実行フェーズを追加することを選択します。新しいフェーズの名前を "Update Launch Version"のようなものに変更してください。次に、新しいフェーズを既存の[バンドルリソースのコピー]フェーズの前にドラッグします。
新しい「起動バージョンの更新」フェーズを開きます。シェルフィールドに/bin/bash
と入力します。フェーズに次のコードをコピーして貼り付けます。
VERSION=`cat Info.h | grep APP_VERSION | cut -f3 -d' '`
sed -e "/userLabel=\"APP_VERSION\"/s/text=\"[^\"]*\"/text=\"$VERSION\"/" Storyboard.storyboard > tmp.storyboard
ここでクリーンビルドを行います。これは現時点でのテストです。 tmp.storyboard
を見て、正しく表示されていることと、アプリバージョンのラベルに正しいバージョンが表示されていることを確認してください。
それが動作されると、上記のコードに更新します。
VERSION=`cat Info.h | grep APP_VERSION | cut -f3 -d' '`
sed -i bak -e "/userLabel=\"APP_VERSION\"/s/text=\"[^\"]*\"/text=\"$VERSION\"/" Storyboard.storyboard
この最終バージョンでは、実際に起動画面ストーリーボードファイルを更新します。以前のバージョンでは、ストーリーボードを破棄することなく他のすべてが動作していることを確認するテストでした。
あなたの答えをありがとう。正しい軌道に乗るのに役立ちました。バージョン番号を設定するために 'Info.h'ファイルを使う代わりに、私は' Info.plist'から直接読みました。 'BUNDLE_ID = $(/ usr/libexec/PlistBuddy -c" Print:CFBundleShortVersionString "" Info.plist ") sed -i bak -e"/userLabel = \ "APP_VERSION \ "/ s/text = \" [^ \ "] * \"/text = \ "$ BUNDLE_ID \"/"LaunchScreen.storyboard' –
- 1. CFBundleVersion(および/または)CFBundleShortVersionStringをプログラムで設定するにはどうすればよいですか?
- 2. ラジオボタンで表を表示および非表示にするにはどうすればいいですか?
- 3. XMLをグラフィカルに表示するにはどうすればよいですか?
- 4. ルビにgooglechartを表示するにはどうすればよいですか?
- 5. ウェブサイトをiframeに表示するにはどうすればよいですか?
- 6. WindowsFormsにグラフを表示するにはどうすればよいですか?
- 7. ラリーボールボードコンポーネントにスクロールバーを表示するにはどうすればよいですか?
- 8. ナビゲーションビューアをテーブルビューに表示するにはどうすればよいですか?
- 9. PreferenceFragmentにディバイダを表示するにはどうすればよいですか?
- 10. ウェブページにエコテンプレートを表示するにはどうすればよいですか?
- 11. フォームフィールドを非表示にするにはどうすればよいですか?
- 12. シーンにDoublePropertyを表示するにはどうすればよいですか?
- 13. AlertDialogにCalendarViewを表示するにはどうすればよいですか?
- 14. テーブルをVaadinに表示するにはどうすればよいですか?
- 15. アプリケーションにブラックベリーマップを表示するにはどうすればよいですか?
- 16. FirebaseにdisplayNameを表示するにはどうすればよいですか?
- 17. TextViewにバックスラッシュを表示するにはどうすればよいですか?
- 18. マウスカーソルを非表示にするにはどうすればよいですか?
- 19. アクションデータをJSPに表示するにはどうすればよいですか?
- 20. divにiframeを表示するにはどうすればよいですか?
- 21. WPでポストオフセットを表示するにはどうすればよいですか?
- 22. divsをjavascriptで表示するにはどうすればよいですか?
- 23. iosでcalendarViewを表示するにはどうすればよいですか?
- 24. Androidでダイアログを表示するにはどうすればよいですか?
- 25. Androidでログメッセージを表示するにはどうすればよいですか?
- 26. シェフサーバーでレシピを表示するにはどうすればよいですか?
- 27. モバイルでデスクトップビューを表示するにはどうすればよいですか?
- 28. リモートアクセスでカスタムエラーページを表示するにはどうすればよいですか?
- 29. FlashBuilderでMovieClipを表示するにはどうすればよいですか?
- 30. Androidでマーカーを表示するにはどうすればよいですか?
私の更新された回答を見てください。今は完全な解決策があります。 – rmaddy