58

評価したiOSプロジェクトでカスタムアセットバンドルを見たので、少なくともそれが可能であることはわかっています。

私の問題は、特定のイメージに約22,000タイルのCATiledLayerを使用していて、コンパイルに非常に長い時間がかかることです(30分クリーンビルド、通常のビルドでは5〜10分)。そのため、すべての画像を取得してカスタムバンドルを作成し、移植可能にし、毎回アプリバンドルに再コンパイルしないようにします。

どうすればこれを行うことができますか?ドキュメントを確認しましたが、実際にバンドルを作成する方法についての説明が見つかりませんでした。

4

7 に答える 7

105

答えはばかげて簡単です

ファインダーでフォルダーを作成し、それにファイルを追加し、bundlename.bundleに名前を変更します

Xcodeにドラッグ-成功!

アクセスするには、PathToMainBundle +"/bundlename.bundle"の形式を使用します

于 2011-03-11T19:32:39.207 に答える
41

バンドルの作成方法

  1. ファインダーにフォルダーを作成します。
  2. フォルダにファイルを追加します
  3. 拡張子が.bundle「Newfolder」->「BundleName.bundle」になるようにフォルダの名前を変更します

PS:いつでもフォルダを右クリックして、[パッケージコンテンツの表示]をクリックして、ファイルを追加、削除、または変更できます。

バンドルをXcodeに追加する方法

  1. Xcodeにドラッグします

バンドルの使用方法

NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"BundleName" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath]; 
NSString *resource = [bundle pathForResource:@"fileName" ofType:@"fileType"];

BundleName( 、fileNamefileType適切な名前に置き換えてください)

于 2014-05-27T08:26:28.057 に答える
27

他の2つの役立つアドバイス:

まず、Xcodeでバンドルの内容を表示するには、ファイルインスペクターユーティリティペインでそのタイプを「アプリケーションバンドル」に設定する必要があります。Xcodeを介してコピーしたり、Xcodeを介してコピーしたりすることはできません。ターミナルを使用する必要がありますが、Xcodeはすぐに更新します。

次に、バンドル内のリソースを使用するために、ここに役立つスニペットがあります...

NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"AquarianHarp" ofType:@"bundle"];
NSString *imageName = [[NSBundle bundleWithPath:bundlePath] pathForResource:@"trebleclef2" ofType:@"png"];
UIImage *myImage = [[UIImage alloc] initWithContentsOfFile:imageName];

上記の私のコメントで述べたように、バンドルを実際にロードする必要はなく(実行可能ではないためロードできません)、デバイスで機能するofTypeためには実際のファイルの大文字と小文字を一致させる必要があります。シミュレーターではどちらの方法でも機能するので、この赤いニシンにだまされないでください。

最後に、バンドル内の「Resources」サブフォルダーにリソースを配置する必要はありません。任意のレイアウトを使用できるようですが、パフォーマンスへの影響は不明である可能性があります。

于 2011-11-19T12:50:00.803 に答える
10

これを機能させる方法は次のとおりです。Xcodeで新しいファイルを作成する| リソース| 設定バンドル。次に、Finderでそのバンドルを選択し、[パッケージの内容を表示]を選択して、画像ファイルを追加します。

次に、コードで次のように画像を参照します。

NSString *imgName = @"bundlename.bundle/my-image.png";
UIImage *myImage = [UIImage imageNamed:imgName]; 
于 2011-07-10T05:17:36.823 に答える
3

アセットまたはリソースバンドルを作成する手順は次のとおりです(例FrameworkResources.bundle)-驚くほど自明ではありません。これは、静的フレームワークを作成している場合に特に便利です。

  1. Xcodeで[ファイル]->[新規]->[ターゲット]を押し​​ます
  2. 「macOS」タブを選択し、「バンドル」を検索します
  3. 「バンドル」をタップ->「次へ」をクリック->製品名「MyResources」を入力->「完了」をタップ
  4. 新しく作成したバンドルの「ビルド設定」に移動します。「BaseSDK」(SDKROOT)を「iOS」に変更します
  5. 新しく作成されたバンドルの「ビルドフェーズ」に移動します。「ソースのコンパイル」と「バイナリとライブラリのリンク」を削除します(これにより、バンドル内の実行可能ファイルが削除され、あらゆる種類のビルドおよびアプリの送信エラーが発生する可能性があります)
于 2019-02-05T17:04:01.733 に答える
0

Xcodeプロジェクトでのファイルのバンドルと読み取りに関するメモ

手順:

  1. test.txtファイルを作成し、それに「testing」というテキストを追加して、test.bundleという名前のフォルダーに配置します。
  2. Xcodeの.appファイルの横にドラッグアンドドロップします(コピー)
  3. print(Bundle.main.resourcePath!+"/temp.bundle/test.txt")出力:/Users/James/Library/Developer/Xcode/DerivedData/GitSyncMac-heiwpdjbtaxzhiclikjotucjguqu/Build/Products/Debug/GitSyncMacApp.app/Contents/Resources/temp.bundle/test.txt

例:

print(content(Bundle.main.resourcePath!+"/temp.bundle/test.txt")) // testing
static func content(_ path:String)->String?{
    do {
        let content = try String(contentsOfFile:path, encoding:String.Encoding.utf8) as String//encoding: NSUTF8StringEncoding
        return content
    } catch {
        return nil
    }
}
于 2017-07-31T20:41:12.193 に答える
0

ロード可能なバンドルプロジェクトの作成は、アプリケーションの作成と同じです。適切なプロジェクトテンプレートを選択するだけです。ロード可能なバンドルプロジェクトを作成するには、次の手順を実行します。

  1. Xcodeを起動します。
  2. [ファイル]メニューから[新しいプロジェクト...]を選択します。
  3. テンプレートリストから、CocoaBundleを選択します。
  4. [次へ]をクリックします。
  5. プロジェクトの場所を選択し、[完了]をクリックします。

ビルドして実行すると、XcodeでProjectNavigatorのProductsフォルダーにバンドルファイルが表示されます。バンドルを右クリックして、[Finderに表示]を選択します。

于 2020-04-24T20:41:25.147 に答える