Xcode 10-画像リテラルはもう利用できません


93

Xcode 10リリースノート:「Swift画像リテラルのコード補完がXcode 10で削除されました」

したがって、コードにイメージを追加できなかった(そして古いプロジェクトを実行できなかった)のはバグではありません。入力UIImageView(image:するだけではpngやjpegを受け付けないため、コードに画像を追加するにはどうすればよいですか。

let cellImage: UIImageView = {
    let image = UIImageView(image: ???))

    return image
}()

システム:macOS Mojave
Xcode:Xcode 10 Beta 4


UIImage(named: "myImage")イェオールド倍のように(?)
Alladinian

注意:画像リテラルのコード補完のみが削除されました画像リテラル自体は正常に動作し続けるスウィフト4.2でXCodeの10のを。
iSofia '19

@isofiaいいえ、作成できません。
マット

3
これは残念なことですが、画像リテラルの完成は素晴らしい機能でした
Eric Armstrong

回答:


119

Xcodeの10とスイフト4.2、XcodeのIDEの唯一コード補完機能(またはオートコンプリート)は、古い方法のために中止されました。新しい方法は次のとおりです。

入力するだけでimage literal、デフォルトのアイコンが表示されます。

ここに画像の説明を入力してください

 

このアイコンをダブルクリックすると、メディアライブラリーが右側に開きます。

ここに画像の説明を入力してください

 

画像を選択するだけで、以前と同じように機能します。

ここに画像の説明を入力してください


62
この方法で名前で画像を見つけることは不可能です。そして私のデザイナーは私にすべてのアセットを白地に透明なpngとして与えたので、すべてのサムネイルはランダムな順番で真っ白にレンダリングされます... -_-
2018

2
こんにちはクール、すべての画像をグレーに配置するようにデザインに指示してください。その後、アセットをテンプレートに変更し、ストーリーボードまたはコードに色を付けることができます:)
Daniel Arantes Loverde

こちらが正常です。リストをダブルクリックして開きます
Daniel Arantes Loverde

@Cœurそれは不可能ではありませんが難しいです。プロジェクトを進めると、#imageLiteralはトークン化された文字列の単なるグラフィック表現であり、検索で検索可能になります(現在のフォルダーの#imageLiteral):)
Dominik Bucher

@DominikBucher 2年が経過し、現在Xcode 12を使用しているため、フローはXcodeの右上にある+ + Lまたは+ボタンを使用することです。
クール

98

メディアライブラリタブを開くショートカットを見つけました:

+ +M

現時点では、公式ドキュメントはXcode 10ベータでのいくつかの使用例をカバーしていないため、メディアパーツを古い位置に移動する方法を見つけることができません。


7
アイテムを挿入するためにEnterキーを押すことはできません。アイテムをコードにドラッグするには、マウスカーソルを使用する必要があります-.-
fl034

4
メディアライブラリは適切な画像リテラルを挿入しませんが、3つの異なる画像解像度を参照する3つの画像リテラルを挿入します。
ジョシュアサリバン

最初の2つを削除しても、引き続き機能します。とても厄介です、アップル。
CIFilter

51

Xcodeのメディアライブラリを使用して、画像リテラルをコードに追加できます。

XCodeメディアライブラリを表示

ライブラリから画像を選択し、コードにドラッグアンドドロップします

ライブラリから画像を選択

画像リテラルを作成します


ありがとう!その他の場合:最初のスクリーンショットでは、LEFTMOSTアイコンが押されています{}
xaphod

3
興味深いことに、これはpdfリソースを使用するときに私にとって無効な画像リテラルを作成し、GMビルドでランタイムクラッシュを引き起こしました。
デビッドガンスター2018

15
これにより@1x@2x@3x
、、、

2
真剣にこれはどのように機能するはずですか?3つの解像度すべての1つの表現をドラッグアンドドロップする方法はありませんか?これはAppleによる大きな見落としのようです。
aBikis

28

Swift画像リテラルを利用するレガシーコードを使用する他の人のために、画像リテラル関数自体のコードと構文は引き続き有効であり、Swift 4.2を使用するXcode 10で完全に正常に動作します。

これらの画像リテラルを利用する既存のコードをロールバックしたりリファクタリングしたりする必要はなく、次のように使用できます。

imageView.image = #imageLiteral(resourceName: imageNameString)

Xcode IDEのコード補完機能(またはオートコンプリート)のみが廃止されました。


更新

以前のバージョンと現在のバージョンまたはXcode / Swiftでの画像リテラル表現の違い:

image = #imageLiteral(resourceName: "flower.jpg")

image = #imageLiteral(resourceName: "flower.jpg")

抜粋が示すように、画像リテラルは実際の画像のサムネイルと並んで表示されていました。ただし、現在は、代わりに汎用アイコンのみが使用されています。おそらく、これはインラインサムネイルの処理と表示のオーバーヘッドを排除することにより、IDEの負担を軽減することになるでしょう。


2
Appleがこれを削除した理由を知っていますか?画像リテラルは今後廃止される予定ですか?
ブライアンヒル

@BryanHill説明はありません。しかし、私は上記のように、最善の推測で私の回答を更新しました。
iSofia 2018

画像の代わりに一般的なアイコンが表示されるようにマークしました。その後、アプリケーションはその場所でクラッシュします。
Badal Shah

どういうわけか、サムネイルを含む行を選択すると、サムネイルがインラインで突然表示されました(Xcode 10.0(10A255))。
fl034

2
私はそれは単なるバグだと思います
Reid Ellis

18

ヒント:コードにリテラル画像を追加した後、3つの解像度を修正します。
別の削除1.、1つの画像だけ保つ
2.コメントリテラル画像を使用して行のコードを、そして同様に、コード内のリテラル画像を表示されます。#imageLiteral(resourceName: "image@2x.png"
3. resourceName値を、削除@2xやファイルの拡張子など.png、画像のみ名保つ:#imageLiteral(resourceName: "image")
4コメントを解除します!画像はコードで表示されます。


4
ありがとう。猛威を振るうごみ火のXCode画像リテラルは
xaphod

1
(私はただ好きだったraging dumpster fire;))。
Chris Prince、

おかげで、これはimage nameピッカーから選択する必要がなく、実際にを使用できる(ただし、それをイメージリテラルとして保持する)良い方法です。
angtlin

7

Xcode 11では、メディアライブラリは[表示]> [ライブラリの表示(SHIFT + CMD + L)]にあります。


6

使用して誰場合はXcodeの11は、その後、あなたはオプションの下に使用しているすべてのメディアを見つけることができます:

ここに画像の説明を入力してください

ここに画像の説明を入力してください


しかし、これは画像へのパスのみを挿入しますか?
Ixx

はい、挿入のみのパスですが、これはすべての画像リテラルを確認できる方法です
教祖


0

Xcode 10ベータ4を使用していますが、同じ問題があります!古い方法で画像を渡すことで解決しました

PizzaModel(
            nome: "Marinara",
            ingredienti: "Pomodoro, Aglio",
            calorie: "729",
            img: UIImage(named: "marinara")!
)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.