web-dev-qa-db-ja.com

Swift UIImageでの遊び場

私はXcode 6で作業しており、セッション401「Xcode 6の新機能」でデモされたコードを再作成しようとしています。 Images.xcassets(Sampleと呼ばれる)に画像を追加し、プレイグラウンドファイル内でこの画像にアクセスしようとしています(デモされています)。

私のコードは次のとおりです(デモと同様):

var sample = UIImage(named: "Sample")

ただし、デモのように動作させることはできません。何か不足していますか?

53
Ross Gibson
  1. Finderで.playgroundファイルを開きます。
  2. その横にResourcesというフォルダーを作成します。
  3. 必要な画像をこのフォルダーに追加します。
  4. プレイグラウンドでopt-cmd-1を押して、ファイルインスペクターを開きます。右側に遊び場が表示されます。選択していない場合は、cmd-1を押してProject Navigatorを開き、プレイグラウンドファイルをクリックします。

File Inspector

  1. 「リソースパス」で「相対プレイグラウンド」を選択します
  2. 下のフォルダアイコンをクリックして、前に作成したリソースフォルダを選択します。

これで、標準NSImage(named: "filename_without_extension")で使用できるバンドルが必要になります。

Working nsbundle image

注:Xcodeは.playgroundフォルダーを頻繁に上書きするため、この方法を使用して、resourcesフォルダーが常に削除および再作成されないようにすることをお勧めします。

64
Chris Hill

IOS Developer Library-> Playground Help を見て、「Resource Files」を検索すると、答えが見つかります。

1、.playgroundを開きます

2、[表示]> [ナビゲーター]> [プロジェクトナビゲーターの表示]を選択して、プロジェクトナビゲーターを表示します。

3、画像をリソースにドラッグ

次のように:

enter image description here

99
Bruce

これにも問題がありました。

残念ながら、クリスの答えは私にはうまくいきませんでした。 Xcode 6の今後のベータリリースでこの設定が削除された可能性があります。

Xcode 6.0 beta 4(6A267N)の2014年7月21日に利用可能なソリューションを次に示します。これは、以前の「Inside playground」オプションに対応していると思います。これが、Playgroundパッケージ自体の中でResourcesフォルダーが存在する場所です。

これを設定する方法は次のとおりです。

Finderを使用する-または、あなたが私のようなもので、素晴らしい Path Finder を使用する場合-右選択してShow Package Contentsを選択次のとおりです。

enter image description here

パッケージResourcesフォルダーが表示されます:

enter image description here

画像ファイルをそのフォルダにコピーすることでビジネスができます:

let imageNames = ["back-button", "background", "bg_top"]
let images = imageNames.map { UIImage(named: $0) }

enter image description here

32
Max MacLeod

Xcode 9の場合:

  • Resourcesフォルダーを選択します
  • 右クリックして「「リソース」にファイルを追加
  • 次のように使用します:let image = UIImage(named: "no")

enter image description here

10
William Hu

Xcode 8 Beta 1では、画像リテラルを使用してXcodeプレイグラウンドに画像をインポートできます。

imageと入力して、画像リテラルを追加します。

Swift Image Literal

画像を選択(または参照)します:

Image

インラインで画像を見る:

Inline

4
JAL

プレイグラウンドで次のコマンドを使用して、resourcePathのパスを見つけることができます。

var bundle = NSBundle.mainBundle()
var path = bundle.resourcePath

私のデフォルトは:

/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Agents
3
user3715448

ただし、デモのように動作させることはできません。何か不足していますか?

名前だけを使用して画像を参照するために画像を配置する必要があるかどうかはわかりませんが、次のように画像へのフルパスを指定することで同じコードが機能します:

var sample = UIImage(named: "/Users/my_user_name/Desktop/Image1234.jpg")

フルパスを使用しなければならないことは、本来よりも複雑に思えますが、機能し、より興味深い問題に進むことができます。

3
Caleb

OS Xプレイグラウンドではなく、iOSプレイグラウンドでこのセットアップを取得するのが困難でした。バンドルと相対パスを使用して実行しようとすると、より複雑になります。

画像をすばやく取得したい場合は、絶対ファイルパスを使用することもできます。

IOSの場合:

# iOS
let absoluteImagePath = "/absolute/path/to/image.png"
let image = UIImage(contentsOfFile: absoluteImagePath)

そしてOS X

# OS X
let absoluteImagePath = "/absolute/path/to/image.png"
let image = NSImage(contentsOfFile: absoluteImagePath)
3
algal

これがXcodeバージョン6.1.1で私にとってうまくいったことです。

  1. メインストーリーボードと同じディレクトリの下にプレイグラウンドファイルを作成します。

    Folder Structure

  2. Playgroundファイルの[ユーティリティ]ペインを開き、Resource Pathセクションの右矢印をクリックして、そのディレクトリに画像を追加します。

    Resource Path for Playground

  3. Playgroundファイル内のテストイメージ。

    Result

2
toadead

Xcode 6ベータ5(およびおそらくそれ以降)を搭載したiOSプレイグラウンドでは、バンドル内の画像を見ることができます。

  1. プレイグラウンドでCmd + Opt + 1を押し、リソースパスの下にある矢印をクリックします(これによりFinderが開きます)
  2. 写真をこのフォルダーに入れます
  3. どちらかでアクセスする

    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!)
    
2
voiger

XCode 6.3.1を使用し、完全なシミュレーターでプレイグラウンドを実行する(iOS)私は次のことをしなければなりませんでした:

  1. Finderで.playgroundファイルを見つける
  2. 右クリック->パッケージの内容を表示
  3. まだ存在しない場合は、パッケージ内にResourcesという名前のフォルダーを作成します
  4. そこに画像を追加します

次に、let i = UIImage(named: "filename.png")でインスタンス化します

1
chadkouse