Xcode 10 - literal gambar tidak lagi tersedia

95

Catatan Rilis Xcode 10: "Penyelesaian Kode untuk literal gambar Swift telah dihapus di Xcode 10"

Jadi itu bukan bug yang saya tidak dapat menambahkan gambar dalam kode (dan menjalankan proyek lama). Bagaimana kita kemudian menambahkan gambar mulai sekarang dalam kode karena hanya mengetik UIImageView(image:tidak akan menerima png atau jpeg.

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

    return image
}()

Sistem: macOS Mojave
Xcode: Xcode 10 Beta 4

Pawel Cichonski
sumber
UIImage(named: "myImage")seperti di masa lalu (?)
Alladinian
Patut diperhatikan: Hanya pelengkapan kode untuk literal gambar yang dibatalkan . The literal gambar diri mereka terus bekerja dengan baik di Xcode 10 dengan Swift 4.2.
iSofia
@isofia tidak, mereka tidak melakukannya karena Anda tidak dapat membuatnya.
matt
3
ini sangat disayangkan, penyelesaian literal gambar adalah fitur yang bagus
Eric Armstrong
2
Kemungkinan duplikat dari Saran gambar tidak berfungsi Xcode 10
JD.

Jawaban:

124

Di Xcode 10 dan Swift 4.2 , hanya fungsi penyelesaian kode (atau pelengkapan otomatis) dari Xcode IDE yang telah dihentikan untuk cara lama. Inilah cara baru:

Cukup ketik image literaldan itu akan lengkap dengan ikon default.

masukkan deskripsi gambar di sini

 

Klik dua kali pada ikon ini dan itu akan membuka perpustakaan media di sebelah kanannya.

masukkan deskripsi gambar di sini

 

Pilih saja gambar Anda dan itu berfungsi seperti sebelumnya!

masukkan deskripsi gambar di sini

Daniel Arantes Loverde
sumber
63
Tidak mungkin menemukan gambar dengan nama dengan cara ini. Dan desainer saya memberi saya semua aset sebagai png putih-pada-transparan, jadi semua thumbnail ditampilkan sebagai putih murni dalam urutan acak ... gambar mana yang dipilih adalah misi yang mustahil. -_-
Cœur
2
Hai Coeur, tolong, beri tahu desain Anda untuk meletakkan semua gambar dengan warna abu-abu, lalu Anda mengubah aset Anda menjadi template, dan kemudian Anda dapat mewarnainya di Storyboard atau kode :)
Daniel Arantes Loverde
Di sini normal, klik dua kali buka daftar
Daniel Arantes Loverde
@ Cœur bukan tidak mungkin tapi sulit, jika Anda melalui proyek, #imageLiteral hanyalah representasi grafis dari tokenized string, yang membuatnya dapat dicari dengan find (#imageLiteral di folder Anda saat ini) :)
Dominik Bucher
@Dominik Bucher sudah dua tahun dan sekarang saya menggunakan Xcode 12, jadi alurnya adalah menggunakan + + Latau tombol + di kanan atas Xcode.
Cœur
98

Menemukan Pintasan untuk membuka Tab Perpustakaan Media:

+ +M

Pada titik ini, dokumentasi resmi tidak mencakup beberapa kasus penggunaan di Xcode 10 beta jadi saya tidak dapat menemukan cara untuk memindahkan bagian media ke posisi lama.

Ron Gahlot
sumber
7
Sangat buruk saya tidak bisa mengetik enter untuk memasukkan item. Saya harus menggunakan kursor mouse untuk menarik item ke dalam kode -.-
fl034
4
Pustaka media tidak memasukkan literal gambar yang tepat, meskipun ... ia memasukkan 3 literal gambar yang mengacu pada 3 resolusi gambar yang berbeda.
Joshua Sullivan
Jika Anda menghapus dua yang pertama, itu masih berfungsi. Sangat berantakan, Apple.
CIFilter
53

Anda dapat menggunakan Media Library di Xcode untuk menambahkan literal gambar ke kode Anda:

Tampilkan perpustakaan media XCode

Dan kemudian pilih gambar dari perpustakaan dan seret & lepas ke kode Anda

Pilih gambar dari perpustakaan

Ini akan membuat gambar literal

andrey.krukovskiy
sumber
Terima kasih! Untuk lainnya: di tangkapan layar pertama, ikon KIRI TERTEKAN {}
xaphod
3
Menariknya, ini membuat literal gambar yang tidak valid bagi saya saat menggunakan sumber daya pdf, yang mengakibatkan runtime runtime - dalam GM build.
David Ganster
15
Ini menciptakan satu literal untuk masing-masing @1x, @2xdan @3xaset dan karenanya tidak dapat dikompilasi
Zappel
2
Serius bagaimana ini seharusnya bekerja? Apakah tidak ada cara untuk menarik dan melepas satu representasi dari ketiga resolusi? Ini sepertinya pengawasan besar oleh Apple.
aBikis
28

Untuk kepentingan orang lain dengan kode lama yang menggunakan Swift Image Literals, kode dan sintaks dari fungsi literal gambar itu sendiri masih valid dan berfungsi dengan baik di Xcode 10 dengan Swift 4.2.

Tidak perlu melakukan rollback atau refactor kode yang ada yang menggunakan literal gambar ini, dan kode tersebut masih dapat digunakan sebagai berikut:

imageView.image = #imageLiteral(resourceName: imageNameString)

Hanya fungsi penyelesaian kode (atau pelengkapan otomatis) dari Xcode IDE yang telah dihentikan.


MEMPERBARUI

Perbedaan representasi gambar-literal di versi sebelumnya dan saat ini atau Xcode / Swift:

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

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

Seperti yang diilustrasikan oleh ekstrak, literal gambar diwakili sejajar dengan thumbnail dari gambar aslinya. Namun, sekarang, hanya ikon umum yang digunakan sebagai gantinya. Agaknya, ini bertujuan untuk mengurangi beban pada IDE, dengan menghilangkan overhead penanganan dan menampilkan thumbnail sebaris.

iSofia
sumber
2
Apakah kita tahu mengapa Apple mengeluarkan ini? Apakah literal gambar akan terdepresiasi di masa depan?
Bryan Hill
@BryanHill Tidak ada penjelasan yang diberikan, yang saya tahu. Tapi saya telah memperbarui jawaban saya, di atas, dengan tebakan terbaik.
iSofia
Saya telah menandai bahwa ketika Anda akan melihat ikon umum di tempat gambar. maka aplikasi Anda akan mogok di tempat itu.
Badal Shah
Entah bagaimana saya tiba-tiba mendapatkan thumbnail yang ditampilkan secara inline ketika saya memilih baris yang berisi itu (Xcode 10.0 (10A255)).
fl034
2
Saya pikir itu hanya bug
Reid Ellis
18

TIP: Untuk memperbaiki tiga resolusi setelah menambahkan gambar literal dalam kode.
1. Hapus yang lain, simpan hanya satu gambar
2. Komentari kode baris Anda dengan gambar literal, kemudian akan muncul gambar literal dalam kode, seperti: #imageLiteral(resourceName: "[email protected]"
3. dalam resourceNamenilai, hapus @2xdan ekstensi file, seperti .png, simpan hanya nama gambar: #imageLiteral(resourceName: "image")
4. Hapus komentar! Gambar akan ditampilkan dalam kode.

Wesley Gomes
sumber
4
Terima kasih. Apa literal gambar
XCode
1
(Saya hanya suka raging dumpster fire;)).
Chris Prince
Terima kasih, ini adalah cara yang baik untuk benar-benar dapat menggunakan image name(tetapi tetap menyimpannya sebagai literal gambar) daripada harus memilih dari alat pilih.
angtlin
8

Di Xcode 11, pustaka media sekarang berada di bawah View> Show Library (SHIFT + CMD + L).

samwize
sumber
7

Jika ada yang menggunakan Xcode 11 maka Anda dapat menemukan semua media menggunakan opsi di bawah ini:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

guru
sumber
Tapi ini hanya menyisipkan jalur ke gambar?
Ixx
Ya, hanya jalur sisipkan tetapi ini adalah cara Anda dapat memeriksa semua literal gambar
guru
2
  • menggunakan UIImage (imageLiteralResourceName: 'imageName') tidak akan mengembalikan opsional dan berfungsi dengan baik
Francis Ken
sumber
0

Saya menggunakan Xcode 10 beta 4 dan saya memiliki masalah yang sama! Diselesaikan menggunakan cara lama untuk melewatkan gambar

PizzaModel(
            nome: "Marinara",
            ingredienti: "Pomodoro, Aglio",
            calorie: "729",
            img: UIImage(named: "marinara")!
)
Gianlo
sumber