programing

UIImage장치의 실행 화면에서 누락된 이미지 보기

powerit 2023. 5. 3. 21:59
반응형

UIImage장치의 실행 화면에서 누락된 이미지 보기

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

앱을 실행하면 UI 레이블과 로고 이미지가 올바르게 표시되지만 iOS9가 설치된 iPad Air 2에서 앱을 실행하면 스플래시 이미지가 표시되지 않습니다.iOS8을 실행하는 Air와 Mini, 그리고 iPad 2, iPad Air, iPad Air 2용 iOS9 시뮬레이터를 테스트해 보았는데 이미지가 모두 정확하게 표시됩니다.

기본적인 문제 해결 방법을 알아보려고 몇 가지 기본적인 문제 해결 방법을 실행했지만 문제를 해결하지 못했습니다. 작동하는 이미지와 작동하지 않는 이미지 사이의 유일한 차이점은 자산에 추가했을 입니다.

제가 알고 있는 것에 대한 개요는 다음과 같습니다.

  • 부팅 이미지에 대한 UIImageView가 올바른 위치에 올바른 크기로 있습니다.만약을 위해 배경색을 녹색으로 설정했기 때문에 이것을 알 수 있습니다.보기는 있지만 이미지는 나타나지 않습니다.그래서 저는 그 견해가 잘못이 아니라고 생각합니다.

  • 로고 이미지도 사용하도록 스플래시 이미지에 대한 UIImageView를 설정하면 로고 이미지가 보기에 적합한 위치에 나타납니다.이것은 또한 저로 하여금 그 견해가 잘못이 아니라고 생각하게 합니다.

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

  • xcassets 파일의 로고와 스플래시에 대한 UI 이미지 설정이 동일하다는 것을 확인했습니다.이러한 값은 범용, 임의의 너비 및 높이, 다중 스케일 팩터로 설정되며 기본값으로 렌더링됩니다.한 가지 차이점이 있습니다. 로고의 스케일은 1x, 2x, 3x인 반면 스플래시 이미지는 1x, 2x인 반면 UI 이미지는 1x, 1x, 2x만 사용해 보았습니다. UI 이미지는 UI 뷰에서 작동합니다(이전에 프로젝트에 추가된 경우).

  • xcassets에 다른 크기 또는 형식(PNG 및 JPG)의 다른 이미지를 추가하고 해당 UIImage를 사용하여 부팅 이미지를 표시할 수도 없습니다.

  • XIB 파일에 다른 UIImageView를 추가하고 이미 xcassets에 있는 UIImage가 작동하도록 할당하면 로드 화면에 이미지가 나타납니다.

  • 로고에 사용된 이미지 파일을 복사하고 이름을 변경하여 프로젝트에 추가한 다음 부팅 뷰에서 해당 UI 이미지를 사용하면 표시되지 않습니다.

  • 프로젝트를 청소하고, 개발 기계를 다시 시작하고, 에어 2에서 앱을 삭제하고, 문제가 생길 경우를 대비해 다시 설치해 보았습니다.

이 마지막 세 단계를 통해 프로젝트 파일의 수명 중 특정 시점 이후에 추가된 이미지에 문제가 있다고 생각할 수 있습니다.어제 Xcode 7로 업데이트했는데, 스플래시 이미지는 원래 Xcode 6에 추가되었지만 로고 이미지(Xcode 6에도 추가됨)는 몇 달 전에 추가되었습니다.

로고 이미지와 스플래시 이미지에 대한 json 파일을 살펴보았는데 형식이 동일한 것 같습니다.저도 pbxproj 파일을 뒤적여 차이점을 찾아봤지만 전혀 보이지 않습니다.

그래서 제가 에어 2에 특별히 추가하는 이 새로운 이미지들이 출시 화면에 표시되지 않을 수 있는 이유를 아는 사람이 있는지 궁금합니다.이미지가 나타나지 않는 것과 관련하여 제가 읽은 다른 질문들은 모두 이미지 실행 또는 관련 클래스가 있는 XIB 파일의 이미지와 관련된 것으로 보이며, 이 중 어느 것도 여기에서는 관련이 없는 것으로 보입니다.

껐다가 다시 켭니다.

정말로, 장치를 다시 시작해 보세요. 그것이 바로 제가 해결해 준 것입니다.

실패한 것은 다음과 같습니다.

  • 파생 데이터를 치료하고 있습니다.
  • 프로젝트를 정리하는 중입니다.
  • 장치에서 앱을 제거하는 중입니다.
  • Xcode를 다시 시작하는 중입니다.
  • 컴퓨터를 다시 시작하는 중입니다.

이전 관측치:

다른 것들과 마찬가지로 다음과 같습니다.

  • 시뮬레이터에서 잘 작동합니다.
  • 장치(iPhone 5S, iPad Air)에서 작업하는 데 사용됩니다.
  • 코드 변경 사항(git reset --hard HEAD를 통해 확인됨)이 아직 작동을 중지하지 않았습니다.

제가 기억하는 첫 번째 빌드가 작동을 멈춘 곳에서 작동을 멈춘 것은 실행 중인 아이폰의 플러그를 뽑는 것이었습니다. (관련이 있는지는 잘 모르겠습니다.)

그러나 Git 재설정이 수정되지 않은 경우(모든 치료 단계가 작동하지 않음과 함께) 다른 곳에 캐시되어야 한다는 것을 알 수 있습니다..git ignored 파일 중 하나에 있을 가능성이 큽니다.(Xcode 프로젝트에 Git ignore 파일을 사용하고 있습니다.)

하나의 UIImageView(3개가 있는 UIIview)에서는 작동했지만 다른 UIImageView에서는 작동하지 않았던 한 가지 해결 방법은 이미지를 .xcassets 파일에 넣는 것이었습니다.일반 이미지 파일로 복구해도 수정이 취소되지 않았습니다. (정말 캐시 오류처럼 느껴집니다.

업데이트: 상단을 참조하십시오. 장치를 다시 시작하는 것이 장치를 수정한 이유입니다.잘못된 비트맵 데이터가 장치 자체에 캐시되고 있다는 느낌이 듭니다.

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

"제가 해결할 수 있는 방법은 단순히 스토리보드의 UIImageView에 대해 "그래픽 컨텍스트 지우기" 상자의 선택을 취소하는 것이었습니다.이것을 바꾸는 것만으로 해결되었습니다."다른 해결책은 없었습니다.애플 개발자 포럼에서 받았습니다.

여기에 이미지 설명 입력

저는 아이폰 6에서도 똑같은 문제가 있었습니다.

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

작동하지 않는 이유를 찾을 수는 없지만 해결책을 찾았습니다. 파일을 이미지 외부에 두기만 하면 됩니다.인터페이스 작성기에서 xcassets 및 전체 이름(확장자 포함) 사용

스토리보드 샘플의 화면 스플래시

이것이 도움이 되길 바랍니다!

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

  1. 빌드 청소(⌘+⇧+K)
  2. X코드 닫기
  3. iOS 기기 하드 리셋(전원 + 홈 버튼 재부팅)
  4. Xcode 다시 시작 - 장치가 준비되면 인덱싱이 완료되고 장치에 빌드됩니다.

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

이러한 답변은 일부 사용자에게는 효과가 있지만, 이러한 작업이 가능한 이유는 애플리케이션이 캐시된 스냅샷을 "재작성"하거나 "재구축"하도록 강제되기 때문입니다.

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

@jaga의 이 SO 답변은 UIImageView가 장치의 실행 화면에 없는 이유에 대한 해결책을 제공하지만 시뮬레이터에는 없습니다.

배경

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

제가 @TimCamber의 SO 답변을 읽고도 명확하지 않은 이유는 제가 좀 더 연구하고 테스트를 하게 된 계기가 되었습니다.

사용자 지정 글꼴이 내 Launch Screen Storyboard 파일에 포함되지 않는 이유는 자산 카탈로그에 이미지가 포함되지 않는 것과 동일한 이유입니다.

이 앱은 Launch Screen Storyboard 파일에서 앱의 Launch Screen의 세로 및 가로 스냅샷을 준비하고 (현재) 앱 번들에 저장합니다.

  • /Library/Caches/Snapshots/<<app_bundle>>/그리고.
  • /Library/Caches/Snapshots/<<app_bundle>>/downscaled/.

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

해결책

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

  1. (이전 학교) 이미지 파일(.) 추가PNG)를 앱 번들에 추가합니다(아래 스크린샷에서 볼 수 있듯이 이미지 하위 디렉터리의 지원 파일 하위 디렉터리 아래에 이미지 파일을 추가했습니다).

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

  1. Launch Screen Storyboard 파일의 UIImageView 개체에서 해당 이미지를 참조합니다.

Xcode의 Attributes Inspector(속성 검사기) 아래 UIImageView에 대한 ImageView 섹션의 스크린샷

저도 같은 문제를 보고 있었습니다.기기(아이폰6)를 재부팅하고 앱을 기기에 다시 구축하는 것만이 이를 고친 유일한 방법입니다.저는 다른 많은 조언과 제안을 시도했지만 다른 방법은 없었습니다.재부팅 + 재구축만 가능합니다.

내 솔루션 @iOS 11.x:

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

저는 테스트플라이트에서 설치한 앱과 같은 것을 가지고 있었습니다.삭제 -> 아이폰 다시 시작 -> 다시 설치가 가능합니다.앱을 다시 설치하거나 장치를 다시 시작하는 것만으로는 도움이 되지 않았습니다.

컨텐츠 설정 재설정을 선택한 것이 효과적이었습니다.Simulator 메뉴에서

내용 및 설정 메뉴 재설정

저도 같은 문제를 겪고 있었지만, 장치를 다시 시작하는 것은 도움이 되지 않았습니다.실행 스토리보드에서 UIImageView를 삭제하고 새 이미지를 추가했습니다.

장치를 껐다가 다시 켜보셨습니까?해보세요.

Image.xcasset에서 이미지를 가져온 다음 다시 프로젝트에 추가합니다.그것은 나에게 효과가 있었다.

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

저는 Xcode 7에서도 iPad와 iPhone 기기에 대한 정확한 문제가 있었습니다.말이 안 되지만, 이미지 보기의 이미지뿐만 아니라 강조 표시된 이미지도 내 이미지의 동일한 이미지로 설정하여 대부분의 시간을 해결할 수 있었습니다.x카세트

저는 아이폰 5s 기기를 사용하는데, 이 문제도 해결됩니다.

다음 방법으로 수정합니다.

  • 드라이브 데이터 제거

  • 프로젝트 정리

  • Xcode 다시 시작

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

  • 5초를 다시 시작합니다.

Xcode가 메모리를 사용하는 것은 잘못된 것 같습니다. Xcode가 점심 이미지를 그리는 데 실패했기 때문에 시스템이 Xcode에 약간의 메모리를 할당할 수 있습니다(제 컴퓨터에서는 Xcode가 닫히지 않고 몇 주 동안 실행되었습니다).

저한테는 효과가 있어요.

첫 번째 xcode clean de project.

시뮬레이터를 사용하는 경우 앱을 삭제하고 다시 실행합니다.

장치를 사용하는 경우 앱을 삭제하고 장치를 다시 시작합니다.

런치 스크린은 Assets.xcassets의 이미지만 지원하는 것 같습니다.

Xcode를 다시 시작한 것이 제게 도움이 되었습니다.

그것을 하지 못한 것:

  • 빌드 폴더 정리
  • 장치 또는 시뮬레이터 다시 시작(이미지가 둘 다 표시되지 않음)

ImageView를 선택한 다음 특성 검사자 탭 > Image View > Image > Image Name에서 이미지 확장자(.png 또는 .jpg)를 제거합니다.

launchscreen.storyboard에서는 이미지가 나타나지 않지만 장치에 표시됩니다.이것은 저에게 효과가 있었습니다.

그것은 iOS의 버그처럼 보였습니다.때때로 시스템 애니메이션이 사라지듯이.

이제 저는 아이폰을 재부팅하면 작동합니다.

제 경우에는 이미지 이름이었습니다.
는 이지를추습다라는 했습니다.Default-568h@2x.pngLaunchScreen.xib - 테스트용으로 사용하던 이전 실행 화면 중 하나입니다.아이폰 X 시뮬레이터에서 빌드하고 있었는데 이미지가 나타나지 않았습니다.

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

보아하니..@2x문제의 일부였을 뿐만 아니라-568h그게 말이 되는군요-812h@3x장치.

이미지에도 동일한 문제가 있습니다.시작 화면 스토리보드를 봅니다.프로젝트에서 사진 참조를 제거하고 이미지 이름을 변경한 후 프로젝트에 다시 추가했습니다.모든 것이 완벽하게 작동합니다.

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

그것은 나에게 효과가 있었다.

저는 아이폰6의 iOS 10과 시뮬레이터에서 이 문제를 겪었습니다.제 이미지가 폴더 안에 있었는데 그게 문제가 된 것 같습니다.Xcode의 폴더에서 이미지를 제거하고 프로젝트의 기본 디렉터리에 넣어 문제를 해결했습니다.

저도 같은 경험을 합니다.이미지 해상도를 300픽셀/인치에서 72픽셀로 변경합니다.저한테는 효과가 있어요.

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

  • "Launch Screen File"을 다른 xib로 변경
  • 앱 실행
  • xib를 다시 변경합니다.

또한 매우 중요합니다. 다른 탭에서 xib가 열리지 않는지 확인하십시오. 이 경우에도 문제가 발생할 수 있습니다!

저는 저에게 효과가 있는 간단하지만 급진적인 해결책을 찾았습니다.

1 - LaunchScreen.storyboard 파일을 삭제하고 휴지통으로 이동합니다.

2 - 상품 -> 청결

3 - LaunchScreen.storyboard라는 이름의 새 실행 화면 파일을 만들고 이미지를 그 안에 넣습니다.

4 - 저장 및 빌드

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

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

여기에 이미지 설명 입력

이미지 이름이 문제입니다.실행 화면 스토리보드에 사용된 이미지 이름을 변경합니다.영숫자 이외의 문자는 사용하지 않도록 하십시오("_-&@"는 사용하지 마십시오). 저를 위해 매력적으로 작용했습니다.

해결되었습니다!

내게 효과가 있었던 유일한 것은 삭제하는 것이었습니다.ViewController부터LaunchScreen.storyboard새 파일을 생성합니다.ViewController로 설정한.

초기 뷰 컨트롤러임

그만큼 간단합니다 :)

언급URL : https://stackoverflow.com/questions/32579150/uiimageview-missing-images-in-launch-screen-on-device

반응형