Xcode 10-더 이상 사용할 수없는 이미지 리터럴


95

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 엑스 코드 (10)에.
iSofia

@isofia 아니 그들은 당신이 하나를 만들 수 없기 때문에하지 않습니다.

3
이 이미지 문자 완성 좋은 기능이고, 불행한 일이다
에릭 암스트롱

답변:


124

에서 엑스 코드 (10)와 스위프트 4.2 만 코드 완성 기능 (또는 자동 완성) Xcode의 IDE의는 기존의 방법을 중단되었습니다. 새로운 방법은 다음과 같습니다.

입력 만하면 image literal기본 아이콘으로 완료됩니다.

여기에 이미지 설명 입력

 

이 아이콘을 두 번 클릭하면 오른쪽에 미디어 라이브러리가 열립니다.

여기에 이미지 설명 입력

 

이미지를 선택하기 만하면 이전처럼 작동합니다!

여기에 이미지 설명 입력


63
이런 식으로 이름으로 이미지를 찾는 것은 불가능합니다. 그리고 내 디자이너는 모든 자산을 투명에 흰색 png로 제공했기 때문에 모든 섬네일은 임의의 순서로 순수한 흰색으로 렌더링됩니다. -_-
Cœur

2
안녕하세요 쾨르는 다음 템플릿에 자산을 변경, 회색의 모든 이미지를 넣어 설계를 알려주십시오, 그리고 당신은 : 스토리 보드 또는 코드에 착색 할 수
다니엘 Arantes Loverde

여기는 정상입니다. 목록을 두 번 클릭하여 엽니 다.
Daniel Arantes Loverde

@ Cœur 불가능하지는 않지만 어렵습니다. 프로젝트를 살펴보면 #imageLiteral은 토큰 화 된 문자열의 그래픽 표현 일 뿐이므로 find (현재 폴더의 #imageLiteral)로 검색 할 수 있습니다. :)
Dominik Bucher

그것은 2 년 지났는데 흐름이 사용하는 것입니다, 그래서 지금은, 엑스 코드 (12) 사용하고 @DominikBucher + + L+의 엑스 코드의 오른쪽 상단에있는 버튼을 누릅니다.
Cœur

98

미디어 라이브러리 탭을 여는 바로 가기를 찾았습니다.

+ +M

이 시점에서 공식 문서는 Xcode 10 베타의 일부 사용 사례를 다루지 않으므로 미디어 부분을 이전 위치로 이동하는 방법을 찾을 수 없습니다.


7
항목을 삽입하기 위해 입력 할 수 없습니다. 항목을 코드로 드래그하려면 마우스 커서를 사용해야합니다. -.-
fl034

4
그러나 미디어 라이브러리는 적절한 이미지 리터럴을 삽입하지 않습니다. 3 개의 다른 이미지 해상도를 참조하는 3 개의 이미지 리터럴을 넣습니다.
Joshua Sullivan

처음 두 개를 삭제해도 여전히 작동합니다. 너무 지저분 해, 애플.
CIFilter

52

Xcode에서 미디어 라이브러리를 사용하여 코드에 이미지 리터럴을 추가 할 수 있습니다.

XCode 미디어 라이브러리 표시

그런 다음 라이브러리에서 이미지를 선택하고 코드로 끌어다 놓습니다.

라이브러리에서 이미지 선택

이미지 리터럴을 생성합니다.


감사! 기타 : 첫 번째 스크린 샷에서 LEFTMOST 아이콘이 눌려

3
흥미롭게도 이것은 pdf 리소스를 사용할 때 유효하지 않은 이미지 리터럴을 생성하여 GM 빌드에서 런타임 충돌을 일으켰습니다.
David Ganster

15
이것은 각각 하나 개의 문자를 생성 @1x, @2x@3x컴파일되지 않습니다 따라서 자산
Zappel

2
이게 어떻게 작동해야하나요? 세 가지 해상도 모두를 하나의 표현으로 끌어서 놓을 수있는 방법이 없습니까? 이것은 Apple의 거대한 감독처럼 보입니다.
aBikis

28

Swift Image Literal을 지원하는 레거시 코드를 사용하는 다른 사용자를 위해 이미지 리터럴 함수 자체의 코드와 구문 은 여전히 ​​유효하며 Swift 4.2 가 설치된 Xcode 10에서 완벽하게 작동합니다.

이러한 이미지 리터럴을 사용하는 기존 코드를 롤백하거나 리팩터링 할 필요가 없으며 다음과 같이 계속 사용할 수 있습니다.

imageView.image = #imageLiteral(resourceName: imageNameString)

Xcode IDE의 코드 완성 기능 (또는 자동 완성) 만 중단되었습니다.


최신 정보

이전 및 현재 버전 또는 Xcode / Swift에서 이미지 리터럴 표현의 차이 :

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

이미지 = #imageLiteral (resourceName : "flower.jpg")

추출에서 알 수 있듯이 이미지 리터럴은 실제 이미지의 축소판과 함께 인라인으로 표시되었습니다. 그러나 이제는 일반 아이콘 만 대신 사용됩니다. 아마도 이것은 인라인 썸네일을 처리하고 표시하는 오버 헤드를 제거하여 IDE의 부담을 줄이는 방향으로 진행됩니다.


2
애플이 왜 이것을 꺼 냈는지 알고 있습니까? 이미지 리터럴은 향후 감가 상각됩니까?
Bryan Hill

@BryanHill 내가 아는 설명이 없습니다. 그러나 나는 위의 내 대답을 최선의 추측으로 업데이트했습니다.
iSofia

이미지 대신 일반 아이콘이 표시 될 때 표시했습니다. 그러면 응용 프로그램이 그 위치에서 충돌합니다.
Badal Shah

썸네일이 포함 된 줄 (Xcode 10.0 (10A255))을 선택했을 때 갑자기 축소판이 인라인으로 표시되었습니다.
fl034

2
난 그냥 버그라고 생각
리드 엘리스에게

18

팁 : 코드에 리터럴 이미지를 추가 한 후 세 가지 해상도를 수정하려면.
다른 제거 1. 하나의 이미지 만 유지
2. 주석 문자 그대로의 이미지와 라인 코드를 다음과 같이 코드에서 문자 그대로의 이미지를 나타납니다 : #imageLiteral(resourceName: "image@2x.png"
3. resourceName값을 제거 @2x하고 파일 확장자와 같은 .png, 전용 이미지 이름 유지 : #imageLiteral(resourceName: "image")
4의 주석을! 이미지가 코드로 표시됩니다.


4
감사. 성난 쓰레기통 화재 XCode 이미지 리터럴이 mo
xaphod

1
(나는 그냥 raging dumpster fire;)).
크리스 왕자

감사합니다. 이것은 image name선택기에서 선택하는 대신 실제로 사용할 수있는 좋은 방법입니다 (하지만 여전히 이미지 리터럴로 유지).
angtlin

8

Xcode 11에서 미디어 라이브러리는 이제보기> 라이브러리 표시 (SHIFT + CMD + L)에 있습니다.


7

Xcode 11 을 사용하는 사람이라면 아래 옵션을 사용하여 모든 미디어를 찾을 수 있습니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력


그러나 이것은 이미지에 대한 경로 만 삽입합니까?
Ixx

예, 삽입 전용 경로이지만 이것이 모든 이미지 리터럴을 확인할 수있는 방법입니다
전문가

2
  • UIImage (imageLiteralResourceName : 'imageName')를 사용하면 선택 사항이 반환되지 않고 제대로 작동합니다.

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.