私は Xcode 6 で作業しており、セッション 401「Xcode 6 の新機能」でデモされたコードを再作成しようとしています。Images.xcassets (Sample と呼ばれる) に画像を追加し、プレイグラウンド ファイル内で、デモのようにこの画像にアクセスしようとしています。
私のコードは次のとおりです(デモのように):
var sample = UIImage(named: "Sample")
ただし、デモのように動作させることはできません。何か不足していますか?
私は Xcode 6 で作業しており、セッション 401「Xcode 6 の新機能」でデモされたコードを再作成しようとしています。Images.xcassets (Sample と呼ばれる) に画像を追加し、プレイグラウンド ファイル内で、デモのようにこの画像にアクセスしようとしています。
私のコードは次のとおりです(デモのように):
var sample = UIImage(named: "Sample")
ただし、デモのように動作させることはできません。何か不足していますか?
iOS Developer Library -> Playground Helpを見て、 "Resource Files" を検索すると、答えが見つかります。
1、プレイグラウンドを開く
2、[表示] > [ナビゲーター] > [プロジェクト ナビゲーターを表示] を選択して、プロジェクト ナビゲーターを表示します。
3、画像をリソースにドラッグします
次のように:
これで、標準の NSImage (named:"filename_without_extension") で使用できるバンドルができたはずです。
注: Xcode は .playground フォルダーを頻繁に上書きするため、リソース フォルダーが頻繁に削除されて再作成されないように、この方法を使用することをお勧めします。
これにも困ったことがあります。
残念ながら、クリスの答えはうまくいきませんでした。おそらく、Xcode 6 の後のベータ版リリースでこの設定が削除されたのではないかと思います。
これは、2014 年 7 月 21 日に利用可能な Xcode 6.0 ベータ 4 (6A267N) の時点での解決策です。これは、Resources フォルダーがプレイグラウンド パッケージ自体の中にある場所です。
これを設定する方法は次のとおりです。
Finder を使用する場合、または私のように素晴らしいパス ファインダーを使用する場合は、次のように右クリックして [パッケージの内容を表示]を選択します。
パッケージのResourcesフォルダーが表示されます。
画像ファイルをそのフォルダーにコピーすると、ビジネスが行われます。
let imageNames = ["back-button", "background", "bg_top"]
let images = imageNames.map { UIImage(named: $0) }
プレイグラウンドで次のコマンドを使用して、resourcePath のパスを見つけることができます。
var bundle = NSBundle.mainBundle()
var path = bundle.resourcePath
私のデフォルトは次のとおりです。
/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents
ただし、デモのように動作させることはできません。何か不足していますか?
名前だけを使用して参照するために画像をどこに配置する必要があるのか わかりませんが、次のように画像へのフルパスを指定することで同じコードが機能するようになりました。
var sample = UIImage(named: "/Users/my_user_name/Desktop/Image1234.jpg")
フル パスを使用する必要があることは、必要以上に複雑に思えますが、機能し、より興味深い問題に進むことができます。
これは、Xcode バージョン 6.1.1 で機能したものです。
メインストーリーボードと同じディレクトリの下に Playground ファイルを作成します。
Playground ファイルの [ユーティリティ] ペインを開き、Resource Path
セクションの右矢印をクリックして、そのディレクトリに画像を追加します。
Playground ファイル内のイメージをテストします。
XCode 6 ベータ 5 (およびおそらくそれ以降) を使用した iOS プレイグラウンドでは、バンドル内の画像を確認できます。
どちらかでアクセスします
let img = UIImage(named: "logo.png", inBundle: NSBundle.mainBundle(),
compatibleWithTraitCollection: nil)
また
let path = NSBundle.mainBundle().pathForResource("logo", ofType: "png")
let img = UIImage(contentsOfFile:path)
または Swift 4 の場合:
let path = Bundle.main.path(forResource:"logo", ofType: "png")
let img = NSImage(contentsOfFile:path!)
XCode 6.3.1 を使用し、完全なシミュレーター (iOS) でプレイグラウンドを実行している場合、次のことを行う必要がありました。
次に、インスタンス化するだけです
let i = UIImage(named: "filename.png")