Xcode 10 - görsel değişmez değerleri artık mevcut değil


95

Xcode 10 Sürüm Notları: "Swift görsel değişmezleri için Kod Tamamlama Xcode 10'da kaldırılmıştır"

Bu yüzden koda resim ekleyemem (ve eski projeleri çalıştırmam) bir hata değil. Bundan sonra, sadece yazmak UIImageView(image:herhangi bir png veya jpeg kabul etmeyeceğinden, bundan sonra koda nasıl resim ekleriz ?

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

    return image
}()

Sistem: macOS Mojave
Xcode: Xcode 10 Beta 4


UIImage(named: "myImage")eski zamanlarda olduğu gibi (?)
Alladinian

Dikkate değer: Yalnızca görüntü değişmezleri için kod tamamlama kaldırıldı . Görüntü değişmezleri kendileri çalışma cezası devam Swift 4.2 ile XCode 10.
iSofia

@isofia hayır, yapamazsınız çünkü yapamazsınız.
mat

3
bu talihsiz bir durum, görüntünün gerçek anlamda tamamlanması güzel bir özellikti
Eric Armstrong

Yanıtlar:


124

Gelen Xcode 10 ve Swift 4.2 , sadece kod tamamlama fonksiyonu (veya otomatik olarak tam) Xcode IDE eski yol için yoktur. İşte yeni yol:

Sadece yazın image literalve varsayılan simge ile tamamlanacaktır.

görüntü açıklamasını buraya girin

 

Bu simgeye çift tıklayın ve medya kitaplığını sağ tarafında açacaktır.

görüntü açıklamasını buraya girin

 

Sadece imajınızı seçin ve eskisi gibi çalışın!

görüntü açıklamasını buraya girin


63
Bu şekilde ismiyle bir görüntü bulmak imkansız. Ve tasarımcım bana tüm varlıkları şeffaf beyaz üzeri png olarak verdi, böylece tüm küçük resimler rastgele bir sırayla saf beyaz olarak gösteriliyor ... hangi resmi seçmek imkansız. -_-
Cœur

2
Merhaba Coeur, lütfen tasarımınıza tüm resmi griye koymasını söyleyin, sonra varlıklarınızı şablona değiştirin ve ardından bunu Storyboard veya kodda renklendirebilirsiniz :)
Daniel Arantes Loverde

İşte normal, çift tıklayın listeyi açın
Daniel Arantes Loverde

@ Cœur bu imkansız değil ama zor, eğer projeden geçerseniz, #imageLiteral sadece belirteçli dizenin grafik temsilidir, bu da onu find ile aranabilir hale getirir (#imageLiteral mevcut klasörünüzde) :)
Dominik Bucher

@DominikBucher iki yıl oldu ve şimdi Xcode 12 kullanıyorum, bu nedenle akış Xcode'un sağ üstündeki + + Lveya + düğmesini kullanmaktır .
Cœur

98

Ortam Kitaplığı Sekmesini açmak için Kısayol bulundu:

+ +M

Bu noktada, resmi belgeler Xcode 10 beta'daki bazı kullanım durumlarını kapsamıyor, bu nedenle medya bölümünü eski konumuna taşımanın bir yolunu bulamıyorum.


7
Çok kötü, bir öğe eklemek için enter yazamıyorum. Öğeyi koda sürüklemek için fare imlecini kullanmam gerekiyor -.-
fl034

4
Medya kitaplığı uygun bir görüntü değişmezi eklemiyor, ancak ... 3 farklı görüntü çözünürlüğüne atıfta bulunan 3 görüntü değişmezi koyuyor.
Joshua Sullivan

İlk ikisini silerseniz, yine de çalışır. Çok dağınık, Apple.
CIFilter

53

Kodunuza görüntü değişmezi eklemek için Xcode'daki Ortam Kitaplığı'nı kullanabilirsiniz:

XCode medya kitaplığını göster

Ve sonra kitaplıktan resim seçin ve kodunuza sürükleyip bırakın

Kitaplıktan resim seçin

Görüntü değişmez yaratacak


Teşekkürler! Diğerleri için: ilk ekran görüntüsünde, LEFTMOST simgesine {} basılır
xaphod

3
ilginç bir şekilde, bu, pdf kaynaklarını kullanırken benim için geçersiz görüntü değişmezleri oluşturdu ve GM yapısında bir çalışma zamanı çökmesine neden oldu.
David Ganster

15
Bu her biri için bir literal yaratır @1x, @2xve @3xderleme değil dolayısıyla varlığın ve
Zappel

2
Cidden, bunun nasıl çalışması gerekiyor? Üç kararın da bir temsilini sürükleyip bırakmanın bir yolu yok mu? Bu, Apple tarafından büyük bir gözetim gibi görünüyor.
aBikis

28

Swift Image Literals kullanan eski koda sahip başkalarının yararı için, görüntü değişmez işlevinin kodu ve sözdizimi hala geçerlidir ve Swift 4.2 ile Xcode 10'da mükemmel şekilde çalışır.

Bu görüntü değişmezlerini kullanan mevcut kodu geri almaya veya yeniden düzenlemeye gerek yoktur ve bunlar yine de aşağıdaki gibi kullanılabilir:

imageView.image = #imageLiteral(resourceName: imageNameString)

Yalnızca Xcode IDE'nin kod tamamlama işlevi (veya otomatik tamamlama) durdurulmuştur.


GÜNCELLEME

Önceki ve şu anki sürümlerde veya Xcode / Swift'de imge-değişmez gösterimdeki fark:

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

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

Özette gösterildiği gibi, görüntü değişmezleri, gerçek görüntülerinin küçük resimleri ile aynı hizada temsil edildi. Ancak artık onun yerine yalnızca genel bir simge kullanılıyor. Muhtemelen, bu, satır içi küçük resimleri işleme ve görüntülemenin genel yüklerini ortadan kaldırarak IDE üzerindeki yükü azaltmaya yöneliktir.


2
Apple'ın bunu neden çıkardığını biliyor muyuz? Görüntü değişmezleri gelecekte amortismana tabi tutulacak mı?
Bryan Tepesi

@BryanHill Bildiğim bir açıklama yok. Ancak yukarıdaki cevabımı en iyi tahminle güncelledim.
iSofia

Görüntünün yerine genel bir simge göreceğinizi işaretledim. uygulamanız o yerde çökecektir.
Badal Şah

Her nasılsa, onu içeren satırı seçtiğimde aniden küçük resimlerin satır içinde görüntülendiğini görüyorum (Xcode 10.0 (10A255)).
fl034

2
Sanırım bu sadece bir hata
Reid Ellis

18

İPUCU: Koda gerçek bir görüntü ekledikten sonra üç çözünürlüğü düzeltmek için.
1. Bir başkasını kaldırın, yalnızca bir resmi
koruyun 2. Satır kodunuzu birebir resimle yorumlayın, ardından kodda değişmez resim görünecektir, örneğin: #imageLiteral(resourceName: "image@2x.png"
3. resourceNamedeğerde, kaldır @2xve dosya uzantısında, .pngyalnızca resim adını #imageLiteral(resourceName: "image")
koruyun : 4. Uncomment! Görüntü kodda gösterilecek.


4
Teşekkürler. Ne öfkeli bir çöplük yangını XCode imajı değişmez
xaphod

1
(Sadece beğendim raging dumpster fire;)).
Chris Prince

Teşekkürler, bu, image nameseçiciden seçim yapmak zorunda kalmadan, gerçekten kullanabilmenin (ancak yine de bir görüntü olarak kalmasını sağlayan) iyi bir yoldur .
angtlin

8

Xcode 11'de, ortam kitaplığı artık Görünüm> Kitaplığı Göster (SHIFT + CMD + L) altındadır.


7

Xcode 11 kullanan biri varsa, aşağıdaki seçeneği kullanarak tüm medyayı bulabilirsiniz:

görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin


Ama bu sadece görüntüye giden yolu ekler?
Ixx

Evet, yalnızca yolu ekleyin, ancak bu, tüm görüntü değişmezlerini kontrol etmenin bir yoludur
guru

2
  • UIImage (imageLiteralResourceName: 'imageName') kullanmak isteğe bağlı bir döndürmez ve gayet iyi çalışır

0

Xcode 10 beta 4 kullanıyorum ve bende de aynı sorun var! Görüntüyü geçirmek için eski yöntem kullanılarak çözüldü

PizzaModel(
            nome: "Marinara",
            ingredienti: "Pomodoro, Aglio",
            calorie: "729",
            img: UIImage(named: "marinara")!
)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.