장치의 실행 화면에서 UIImageView 이미지가 누락 됨


301

Xcode 7에 내장 된 iOS8 이상을 지원하는 앱이 있으며 시작 화면에 XIB를 사용하고 있습니다 (시작 이미지가 없습니다). 이보기에는 앱 버전의 단일 UILabel과 Images.xcassets에있는 이미지가있는 2 개의 UIImageView : 로고 및 스플래시 이미지가 포함됩니다.

응용 프로그램을 시작할 때 UILabel과 로고 이미지가 올바르게 나타나지만 iOS9가 설치된 iPad Air 2에서 앱을 실행하면 스플래시 이미지가 나타나지 않습니다. iOS8을 실행하는 Air 및 Mini와 iPad 2, iPad Air 및 iPad Air 2 용 iOS9 시뮬레이터에서 테스트했으며 이미지가 모두 올바르게 표시됩니다.

나는에 무슨 일이 일어나고 있는지 알아낼 수 있는지 확인하기 위해 몇 가지 기본적인 문제 해결을 실행하지만 난 그게 내가 일하고 이미지와 실패한 것 하나 사이에 볼 수있는 유일한 차이는 해결할 수 없었던 나는에 추가 자산...

내가 아는 것에 대한 요약은 다음과 같습니다.

  • 스플래시 이미지의 UIImageView가 올바른 위치에 올바른 크기입니다. 확인하기 위해 배경색을 녹색으로 설정했기 때문에 이것을 알 수 있습니다. 보기가 있지만 이미지가 나타나지 않습니다. 그래서 나는 그 견해가 비난되지 않는다고 가정합니다.

  • 로고 이미지도 사용하도록 스플래시 이미지의 UIImageView를 설정하면 로고 이미지가보기에 올바른 위치에 나타납니다. 이것은 또한 견해가 비난되지 않는다고 가정하게합니다.

  • 스플래시 이미지보기에서 사용중인 UIImage는 앱의 다른 곳에서 사용되며 다른보기에서는 잘 나타납니다 (로고 이미지는 앱의 다른 곳에서도 사용되며 잘 나타납니다). 따라서 이미지가 유효하고 다른보기에 이미지를 표시하는 것은 문제가되지 않는다고 가정합니다.

  • xcassets 파일의 로고 및 스플래시에 대한 UIImage 설정이 동일하다는 것을 확인했습니다. 이 값은 Universal, Any width and height, multiple scale factor로 설정되며 기본값으로 렌더링됩니다. 한 가지 차이점이 있습니다-로고에는 1x, 2x 및 3x 배율이 있고 스플래시 이미지에는 1x 및 2x 만 있지만 UIView에서는 1x 및 1x 및 2x 값만으로 UIImage를 사용해 보았습니다. 얼마 전에 프로젝트에 추가).

  • 다른 크기 또는 형식 (PNG 및 JPG)의 다른 이미지를 xcassets에 추가하고 스플래시 이미지에 대해 UIImageView에서 해당 UIImage를 사용하면 표시되지 않습니다.

  • XIB 파일에 다른 UIImageView를 추가하고 이미 xcassets에 있던 UIImage를 할당하면 이미지가 로딩 화면에 나타납니다.

  • 로고에 사용 된 이미지 파일을 복사하고 이름을 바꾸고 프로젝트에 추가 한 다음 스플래시보기에서 해당 UIImage를 사용하면 표시되지 않습니다.

  • 프로젝트를 청소하고 개발 컴퓨터를 다시 시작한 다음 Air 2에서 앱을 삭제하고 문제가 발생한 경우 다시 설치하려고했습니다.

이 마지막 세 단계는 프로젝트 파일의 수명에서 특정 시점 이후에 이미지가 추가되는 데 문제가 있다고 생각합니다. 어제 Xcode 7로 업데이트하는 동안 스플래시 이미지는 원래 Xcode 6에 추가되었지만 로고 이미지 (Xcode 6에도 추가)는 몇 달 전에 추가되었습니다.

로고 이미지와 스플래시 이미지의 json 파일을 살펴본 결과 동일한 형식으로 보입니다. 나는 또한 차이점을 찾기 위해 pbxproj 파일을 트롤링했는데 아무것도 볼 수 없습니다.

왜 누군가가 왜 Air 2에 추가하고있는 새로운 이미지가 시작 화면에 표시되지 않을지 궁금해하고 있습니까? 모두 표시되지 않는 이미지와 관련하여 읽은 다른 질문은 Launch Images 또는 관련 클래스가있는 XIB 파일의 이미지와 관련이있는 것 같습니다.


1
답장을 의미했습니다-다시 돌아와 제공된 답변을 읽은 다음 Xcode로 돌아와 UIImageView와 이미지를 다시 확인하여 다시 시도하십시오. 이번에는 아무런 변화없이 작동했습니다. 이유가 전혀 없습니다 .Xcode의 동일한 버전, 이전에 동일한 iOS, 동일한 Mac OS, 응용 프로그램을 다시 시작, 재구성, 정리 및 제거하여 작동했습니다. 불행히도 나는 해결책이 도움이되었는지 확인할 수 없었습니다.
MFW

나에게 제공된 답변 중 어느 것도 문제를 해결하지 못했습니다. 시뮬레이터, iPhone 5, iPhone 5 SE, iPad 4는 모두 LaunchScreen.xib 내에 UIImageView를 올바르게 표시합니다 .iPad Air 2는이를 표시하지 않습니다. 모든 장치를 재부팅하고 모든 장치에 다시 설치했습니다. 행동은 남아있다.
Christian

130 개 이상의 투표 응답을 수락해야합니다.
Khanh Nguyen

Khanh에 동의합니다.
gunjot singh

@MFW, 답변 FFS 수락! U를 경찰에 신고합니다.
GeneCode

답변:


474

껐다가 다시 켜십시오.

진심으로, 장치를 다시 시작하십시오 – 그것이 저를 위해 고쳐 준 것입니다.

작동하지 않는 것은 다음과 같습니다.

  • 파생 데이터 정리
  • 프로젝트 청소
  • 기기에서 앱 제거
  • Xcode 재시작
  • 컴퓨터 재시작

이전 관측치 :

다른 사람들과 마찬가지로

  • 시뮬레이터에서 잘 작동
  • 기기 (iPhone 5S, iPad Air)에서 작동하는 데 사용
  • 코드 변경 (git reset --hard HEAD를 통해 확인)이 없지만 작동이 중지되었습니다.

내가 작동을 멈춘 첫 번째 빌드를 시작한 것을 기억하는 것은 iPhone이 실행되는 동안 플러그를 뽑는 것입니다. 관련이 있는지 확실하지 않습니다.

그러나 git reset이 수정하지 않으면 (모든 정리 단계가 작동하지 않는 경우) 이것이 다른 곳에서 캐시되어야한다고 알려줍니다. 아마도 .gitignored 파일 중 하나에 있습니까? ( Xcode 프로젝트에 Git ignore 파일을 사용 하고 있습니다 )

하나의 UIImageView (3 개가있는 UIView)에서는 효과가 있었지만 다른 UI에서는 그렇지 않은 해결 방법은 이미지를 .xcassets 파일에 넣는 것입니다. 일반 이미지 파일로 되 돌리면 수정 프로그램이 실행 취소되지 않았습니다. (캐싱 오류처럼 느껴집니다.)

업데이트 : 참조 – 장치를 다시 시작하면 문제가 해결됩니다. 잘못된 비트 맵 데이터가 장치 자체에 캐시되고 있다는 느낌이 들었습니다.

레이더 : http://openradar.appspot.com/23534818


31
시뮬레이터를 다시 시작하기 만하면됩니다. 미친!
FractalDoctor

1
감사합니다! 이것은 나를 위해 그것을 고쳤다.
CodenameDuchess

6
App Store 사용자가 동일한 문제를 경험할 것이라고 생각하십니까?
Adam Waite

1
@danielstorm은 정직한 것으로 밝혀지지 않았습니다
Adam Waite

2
지연된 버그, gg apple. 전화를 다시 줘서 고맙습니다.
Jacob King

151

"나를위한 해결책은 스토리 보드에서 UIImageView에 대해"그래픽 컨텍스트 지우기 "상자가 선택 해제되어 있는지 확인하는 것입니다. 이것을 바꾸면 해결되었습니다." 다른 솔루션은 나를 위해 일하지 않았습니다. 애플 개발자 포럼 에서 가져 왔습니다

여기에 이미지 설명을 입력하십시오


2
젠장, 나는 이것을 시도하려고 생각하지 않았을 것입니다. Xcode 7.3.1 (7D1014) 및 iOS 9.3.2 개발자 베타 3을 사용하여 시뮬레이터 및 장치 수정
Nuthatch

3
나는 이것이 나를 위해 일한 것을 확인할 수 있습니다. Xcode 7.3 및 iOS 9.3.2.
Torbjørn Kristoffersen 2016 년

1
내 것이 이미 확인 된 경우에도 체크를 해제하고 다시 확인하면 트릭이되었습니다!
lonesomewhistle 2016 년

1
답변을위한 멋진 +1, Xcode 8 및 iOS 10에서도 작동
Skovie

1
이것이 정답입니다. 기기의 iOS 11에서 입증되었습니다.
jberlana

99

iPhone 6에서 정확히 같은 문제가있었습니다.

매우 이상한 사실은 크기, 압축, 색 공간이 동일한 내 이미지에서 다른 이미지를 사용할 수 있다는 것입니다.

왜 작동하지 않는지 찾을 수는 없지만 해결책을 찾았습니다. 파일을 images.xcassets 외부에 넣고 Interface Builder에서 확장명과 함께 전체 이름을 사용하십시오.

스토리 보드 샘플의 splashScreen

이 도움을 바랍니다!


1
그것이 내가 시도한 첫 번째 일이지만 그것은 효과가 없습니다.
Paul Slocum

이것은 나를 위해 일했다. 감사. xcassets 파일의 일부 이미지에서만 작동하는 이유를 알았 으면 좋겠습니다.
Christopher King

이것은 처음부터 작동하지만 이제 이미지 또는 레이블 속성이 전혀 업데이트되지 않습니다. 깨끗한 제품 조치 후에도. 버그를 신고
Philip Borges

앱 삭제 후 iPhone 6s를 다시 시작하면 작업이 완료되었습니다. 그 전에 "그래픽 컨텍스트 지우기"아래의 NikLanf 솔루션도 확인했습니다.
Matthew Ferguson

작동합니다. 시작 화면이 표시 될 때 .xcasset으로 인해 아직로드되지 않은 것 같습니다. 당신이 그것에 대해 생각하면, 그것은 발사 화면입니다-ios가 xcasset을 포함하여 앱 콘텐츠를로드하는 대기 시간입니다. 내 생각에 앱의 루트 폴더에있는 모든 것이 먼저로드되므로 외부에서 작동시키는 것입니다.
GeneCode

33

Xcode 7.3.1 및 iOS 9.3.4에서 다음과 같은 일련의 작업으로 인해 문제가 해결되었습니다.

  1. 빌드 정리 (⌘ + ⇧ + K)
  2. Xcode 닫기
  3. iOS 기기 강제 재설정 (전원 + 홈 버튼 재부팅)
  4. Xcode를 다시 시작하십시오-인덱싱이 완료되면 준비가 완료되면 장치에서 빌드하십시오.

내 하루를 구했다! 감사!
Zack Zhu

일했다. 2 단계와 4 단계를 수행하지 않았습니다. 아마도 iOS 장치의 하드 리셋 만 필요합니다. 누구나 이것을 확인할 수 있습니까?
Timothy LJ Stewart

@ TimothyL.J. 스튜어트 2 단계와 4 단계는 문제가 나에게 상당히 성가신 것이기 때문에 취한 예방 조치 단계였습니다. 그래서 확실했습니다. 나는 그들이 (일반적으로) 빌드에 영향을 미치지 않기 때문에 불필요하다고 말할 수 있다고 생각합니다.
mayankk2308

Xcode 8 Swift 3.0 전원 끄기 또는 강제 재설정은 매번 작동하는 유일한 방법이며 새 자산이 추가 될 때마다 수행해야합니다. DerivedData를 삭제하지 않습니다. 그러나 시뮬레이터에서 이미지가 제대로 작동합니다. 이것은 너무 많은 시간을 낭비했습니다. 솔루션에 대해 @MayankKumar에게 감사드립니다.
Timothy LJ Stewart

매력처럼 일
lborgav 1

27

다른 많은 답변은 장치 재부팅 및 / 또는 재구성 및 / 또는 재설치가 해결책이라고 제안합니다.

이러한 답변은 우리 중 일부에게는 효과가 있지만, 이러한 이유는 앱이 캐시 된 스냅 샷을 "다시 가져 오거나"다시 작성해야하기 때문입니다.

캐시 된 스냅 샷은 스토리 보드 이미지가 포함 된 자산 카탈로그를 포함하여 지원 데이터가 메모리에로드되기 전에 앱에서 이미지를 표시하는 데 사용됩니다.

@jaga의 SO 답변 은 장치의 시작 화면에 시뮬레이터가 아닌 UIImageView가 누락 된 이유에 대한 해결책을 제공하지만 그 이유는 아닙니다.

배경

최근에 "Launch Screen.storyboard"파일에서 사용자 정의 글꼴을 사용하려고했습니다.

@TimCamber의 SO 답변 을 읽은 후에 내가 명확하게 알 수 없었던 이유 는 조금 더 연구하고 테스트해야했습니다.

시작 화면 스토리 보드 파일에 사용자 정의 글꼴이 포함되지 않은 이유는 자산 카탈로그 내의 이미지가 포함되지 않은 것과 같습니다.

이 앱은 실행 화면 스토리 보드 파일에서 앱 시작 화면의 세로 및 가로 스냅 샷을 준비하고 현재 번들로 앱 번들에 저장합니다.

  • /Library/Caches/Snapshots/<<app_bundle>>/
  • /Library/Caches/Snapshots/<<app_bundle>>/downscaled/.

이 프로세스는 사용자 정의 글꼴 및 자산 카탈로그를 포함하여 지원 파일을로드하기 전에 완료됩니다.

해결책

@jaga의 솔루션을 따라 위에서 언급했듯이 문자 그대로 필요한 것은 다음과 같습니다.

  1. (구식 학교) 이미지 번들 (.PNG)을 앱 번들에 추가합니다 (아래 스크린 샷에서 볼 수 있듯이 이미지 서브 디렉토리의 Supporting Files 서브 디렉토리 아래에 이미지 파일을 추가했습니다).

Xcode의 Project Navigator에서 관련 디렉토리의 스크린 샷

  1. Launch Screen Storyboard 파일의 UIImageView 객체에서 해당 이미지를 참조하십시오.

Xcode의 속성 관리자에서 UIImageView에 대한 이미지보기 섹션의 스크린 샷


잠시 동안이 문제를 해결해 주셔서 감사합니다. 그것은 나를 위해 작동합니다.
James Laurenstin

나를 위해 직접 일했습니다. 정답입니다
Mohammad Shraim

실행시 IOS는 자산을 컴파일 할 수 없으므로 이미지를 번들로 배치 할 수 있습니다. 감사.
icould

지금까지 가장 좋은 답변입니다. 이것을 추가하겠습니다 : 이미지는 app-bundle의 루트 디렉토리에 있어야합니다. 그렇지 않으면 하위 디렉토리에 이미지를 저장하는 경우 전체 경로 "Media / launch_v1_200_mod.png"를 제공해야합니다.
MoVod

1
나는 똑같이했다. 내 응용 프로그램은 이미 실행 중이지만 문제는 때때로 이미지를 표시하고 때로는 화면 중간에 흰색으로 사각형으로 표시되는 경우입니다.
Punit

21

나는 같은 문제를보고 있었다. 기기를 재부팅 (iPhone 6)하고 기기에 앱을 재 구축하는 것이 유일한 문제입니다. 다른 많은 팁과 제안을 시도했지만 다른 방법은 없습니다. 재부팅 + 재구성 만 도움이되었습니다.


사용자가 AppStore에서 앱을 업데이트하면 어떻게 보입니까? 장치를 다시 부팅해야합니까?
kokos8998

17

내 솔루션 @iOS 11.x :

  • .jpg대신 이미지를 사용하십시오 .png. 이미지 파일 크기가 중요하다고 생각합니다.
  • (선택 사항) 이미지 파일을 프로젝트 디렉토리에 넣지 말고 .xcassets;

3
의 이미지 파일 외부 퍼팅 .xcassets도움이
Husam

@ Husam 실제로 파일 크기 만 중요하다고 생각합니다. 큰 이미지 (400 + KB .png)와 로고 (10 + KB .png, .xcassets 내부)의 두 가지 이미지가있는 시작 화면이 있습니다. 로고는 항상 정상적으로 표시되지만 큰 로고는 표시되지 않습니다.
Ke Yang

당신은 맞습니다 .. 내 의견 후 다른 이미지를 추가 한 후 문제가 다시 나타납니다. 도와 주셔서 감사합니다
Husam

2
그런 다음 jpg 이미지를 사용하여 지시를 따르고 작동했습니다
Husam

16

TestFlight에서 설치된 앱과 동일했습니다. 응용 프로그램 삭제-> iPhone 다시 시작-> 응용 프로그램 재설치 가 저에게 적합합니다. 앱을 다시 설치하거나 장치를 다시 시작해도 도움이되지 않았습니다.


이것이 나를 위해 일한 유일한 것입니다-90 분 전에 이걸 보았기를 바랍니다!
KML

나는 1 시간 전이 볼 수 있었으면 좋겠다
gerry.liang

나에게도 효과가 있었지만 문제는 이상합니다. |
Nishu_Priya

8

같은 문제가 발생했지만 장치를 다시 시작해도 도움이되지 않았습니다. 나를 위해 일한 것은 시작 스토리 보드에서 UIImageView를 삭제하고 새로운 것을 추가하는 것이 었습니다.



7

나를 위해 일한 것은 시뮬레이터 메뉴에서 내용 및 설정 재설정 ... 을 선택하는 것이 었습니다.

내용 및 설정 메뉴 재설정


6

Image.xcassets에서 이미지를 가져 와서 프로젝트에 다시 추가하십시오. 그것은 나를 위해 일했다.


앱이 실행 화면 스냅 샷을 다시 작성하도록 강제하고 있기 때문에 작동하지만 문제에 대한 해결책이나 이유는 아닙니다.
andrewbuilder 2016 년

6

모바일에서 앱을 제거한 다음 모바일을 다시 시작하고 앱을 다시 설치하십시오. 이제 문제가 해결 될 것입니다


5

나는 iPhone 5s 장치를 사용하고 있으며이 문제도 충족시킵니다.

나는 그것을 고쳐 :

  • 드라이브 데이터 제거

  • 프로젝트 정리

  • Xcode 재시작

  • 내 장치에서 프로젝트를 제거

  • 5를 다시 시작하십시오.

메모리를 사용하는 것이 Xcode의 잘못이라고 생각합니다. 시스템이 Xcode에 약간의 메모리를 할당하여 점심 이미지를 그리는 Xcode가 실패했습니다 (컴퓨터에서 Xcode가 몇 주 동안 닫히지 않고 실행되었습니다)


잘 모르겠지만 잘 작동했습니다. 공유해 주셔서 감사합니다.
Arpit B Parekh

4

iPad 및 iPhone 장치가있는 Xcode 7 에서도이 정확한 문제가있었습니다. 의미가 없지만 이미지 뷰뿐만 아니라 이미지 뷰의 강조 표시된 이미지를 images.xcassets의 동일한 이미지로 설정하여 대부분의 시간을 해결할 수있었습니다.


나에게도 도움이 될 것 같습니다
rafalkitta

4

Launchscreen은 Assets.xcassets의 이미지 만 지원한다고 생각합니다.


위의 모든 답변을 시도했지만 그중 아무것도 나를 위해 일하지 않았습니다. 그러나이 답변은 문제를 해결했습니다.
Ercan Celik

4

그것은 나를 위해 일했다.

xcode clean de project에서 첫 번째.

시뮬레이터를 사용하는 경우 앱을 삭제하고 다시 시작하십시오.

기기를 사용하는 경우 앱을 삭제하고 기기를 다시 시작하십시오.


3

Xcode를 다시 시작하면 나에게 도움이되었습니다.

하지 않은 것 :

  • 클린 빌드 폴더
  • 장치 또는 시뮬레이터를 다시 시작하십시오 (이미지가 보이지 않음).

3

ImageView를 선택한 다음 속성 관리자 탭> 이미지보기> 이미지> 이미지 이름에서 이미지 확장명 (.png 또는 .jpg)을 제거하십시오.

launchscreen.storyboard에는 이미지가 나타나지 않지만 장치에는 이미지가 나타납니다. 이것은 나를 위해 일했습니다.


이것은 나의 문제이기도했다. 이상하게도 일부 장치에서 임의로 작동했습니다. XIB / Storyboard 편집을위한 Xcode 9.4가 포함 된 Xamarin-Project ...
fl034

2

iOS의 버그 인 것 같습니다. 때때로 시스템 애니메이션이 사라졌습니다.

이제 iPhone을 재부팅하면 효과가 있습니다.


2

제 경우에는 이미지 이름 이었습니다. 테스트 목적으로 이전 시작 화면 중 하나 인 LaunchScreen.xib에
이미지를 추가했습니다 Default-568h@2x.png. iPhone X Simulator를 빌드하고 있는데 이미지가 표시되지 않았습니다.

이름을 중립 (MyImage.png)으로 변경하면 문제가 해결되었습니다.

@2x는 문제뿐만 아니라의 일부인 것 같습니다 -568h. -812h@3x장치 에 어떤 의미가 있습니다.


2

이것이 너무 중요 합니다 비어 있어야합니다 !Launch Screen File

여기에 이미지 설명을 입력하십시오


8
그는 XIB 스토리 보드를 사용하여 시작했지만이 답변은 작동하지 않습니다.
benck

2

간단한 해결책은 PNG 대신 JPG를 사용하는 것입니다.


1

imageView 실행 화면 스토리 보드와 동일한 문제가 있습니다. 프로젝트에서 그림 참조를 제거하고 이미지의 이름을 바꾸고 다시 프로젝트에 추가했습니다. 모든 것이 완벽하게 작동합니다.


1

프로젝트 이미지 삭제 2. 이미지 이름 변경 3. 프로젝트에 파일 이미지 추가

그것은 나를 위해 일했다.


1

iPhone 6의 iOS 10 및 시뮬레이터 에서도이 문제가 발생했습니다. 내 이미지가 폴더에 있었고 문제가 된 것 같습니다. Xcode의 폴더에서 이미지를 제거하고 프로젝트의 기본 디렉토리에 배치하여 문제를 해결했습니다.


1

나는 같은 경험을합니다. 이미지 해상도를 300 픽셀 / 인치에서 72로 변경했습니다.


1

다음은 나에게 도움이되었습니다.

  • "시작 화면 파일"을 다른 xib로 변경
  • 앱을 실행
  • xib를 다시 바꾸다

또한 매우 중요 : 다른 탭에서 xib가 열리지 않았는지 확인하십시오.


1

나는 나를 위해 일한 간단하지만 급진적 인 해결책을 발견했다.

1-파일 삭제 : LaunchScreen.storyboard를 휴지통으로 옮깁니다.

2-제품-> 청소

3-LaunchScreen.storyboard라는 새 시작 화면 파일을 만들고 이미지를 넣습니다.

4-저장 및 빌드

몇 시간 동안 복잡한 방법을 시도한 후에 저에게 효과적이었습니다 ... LaunchScreen.storyboard가 쓰기 잠금되어 저장 할 수 없거나 이상한 캐싱 프로세스가 차단하고있는 것 같습니다.


1

이미지 이름이 문제입니다. 실행 화면 스토리 보드에서 사용 된 이미지 이름을 바꾸십시오. 영숫자 이외의 문자를 사용하지 않아야합니다 ( "_- & @"를 사용하지 마십시오).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.