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


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


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.


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


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.


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: "image@2x.png"
3. dalam resourceNamenilai, hapus @2xdan ekstensi file, seperti .png, simpan hanya nama gambar: #imageLiteral(resourceName: "image")
4. Hapus komentar! Gambar akan ditampilkan dalam kode.


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).


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


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

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")!
)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.