Xcode 10 Release Notes: „Code Completion for Swift image literals zostało usunięte w Xcode 10”
Więc to nie jest błąd, że nie mogłem dodawać obrazów w kodzie (i uruchamiać starszych projektów). W jaki sposób od teraz dodamy obrazy w kodzie, ponieważ samo wpisanie UIImageView(image:
nie zaakceptuje żadnego pliku png ani jpeg.
let cellImage: UIImageView = {
let image = UIImageView(image: ???))
return image
}()
System: macOS Mojave
Xcode: Xcode 10 Beta 4
UIImage(named: "myImage")
jak za dawnych czasów (?)Odpowiedzi:
W Xcode 10 i Swift 4.2 tylko funkcja uzupełniania kodu (lub autouzupełniania) środowiska Xcode IDE została wycofana ze starego sposobu. Oto nowy sposób:
Po prostu wpisz,
image literal
a zakończy się domyślną ikoną.Kliknij dwukrotnie tę ikonę, aby otworzyć bibliotekę multimediów po prawej stronie.
Po prostu wybierz swój obraz i działa jak wcześniej!
źródło
⇧
+⌘
+L
lub + w prawym górnym rogu Xcode.Znaleziono skrót, aby otworzyć kartę Biblioteka multimediów:
⇧+ ⌘+M
W tym momencie oficjalna dokumentacja nie obejmuje niektórych przypadków użycia w Xcode 10 beta, więc nie jestem w stanie znaleźć sposobu na przeniesienie części multimedialnej do starej pozycji.
źródło
Możesz użyć biblioteki multimediów w Xcode, aby dodać literał obrazu do swojego kodu:
Następnie wybierz obraz z biblioteki i przeciągnij i upuść go do swojego kodu
Stworzy obraz dosłowny
źródło
@1x
,@2x
i@3x
aktywów, a zatem nie skompilowaćZ korzyścią dla innych, którzy mają starszy kod, który wykorzystuje Swift Image Literals , sam kod i składnia funkcji literału obrazu są nadal prawidłowe i działają doskonale w Xcode 10 z Swift 4.2.
Nie ma potrzeby wycofywania ani refaktoryzacji istniejącego kodu, który wykorzystuje te literały obrazu i nadal można ich używać w następujący sposób:
imageView.image = #imageLiteral(resourceName: imageNameString)
Wyłączono tylko funkcję uzupełniania kodu (lub automatycznego uzupełniania) środowiska Xcode IDE.
AKTUALIZACJA
Różnica w reprezentacji literału obrazu w poprzednich i bieżących wersjach lub Xcode / Swift:
image = #imageLiteral(resourceName: "flower.jpg")
Jak pokazuje wyciąg, literały obrazu zostały przedstawione w jednej linii z miniaturami ich rzeczywistego obrazu. Jednak teraz zamiast tego używana jest tylko ogólna ikona. Prawdopodobnie ma to na celu zmniejszenie obciążenia środowiska IDE poprzez wyeliminowanie kosztów ogólnych związanych z obsługą i wyświetlaniem miniatur w linii.
źródło
WSKAZÓWKA: Aby naprawić trzy rozdzielczości po dodaniu dosłownego obrazu w kodzie.
1. Usuń inny, zachowaj tylko jeden obraz
2. Skomentuj swój kod linii za pomocą dosłownego obrazu, a następnie pojawi się dosłowny obraz w kodzie, taki jak:
#imageLiteral(resourceName: "[email protected]"
3. w
resourceName
wartości, usuń@2x
i rozszerzenie pliku, np..png
Zachowaj tylko nazwę obrazu:#imageLiteral(resourceName: "image")
4. Odkomentuj! Obraz zostanie pokazany w kodzie.
źródło
raging dumpster fire
;)).image name
(ale nadal zachowuje to jako literał obrazu) zamiast wybierania z selektora.W Xcode 11 biblioteka multimediów znajduje się teraz w widoku> Pokaż bibliotekę (SHIFT + CMD + L).
źródło
Jeśli ktoś używa Xcode 11 , możesz znaleźć wszystkie multimedia, korzystając z poniższej opcji:
źródło
źródło
Używam Xcode 10 beta 4 i mam ten sam problem! Rozwiązano przy użyciu starego sposobu przekazywania obrazu
PizzaModel( nome: "Marinara", ingredienti: "Pomodoro, Aglio", calorie: "729", img: UIImage(named: "marinara")! )
źródło