2014-04-04 3 views
4

(CocoaPods를 사용하지 않고) 우리는 오류 메시지의 이러한 종류가 있어요.NSBundle 내에서 Assets.car (xcassets의 컴파일 된 버전)에서 이미지를로드하려면 어떻게해야합니까?</p> <p>식별자 "com.company.OurResourceBundle"로 번들의 펜촉에서 언급 된 "iconStatus"이미지를로드 할 수 없습니다 :

기본적으로 우리는 xcassets 폴더에 번들 이미지를 넣습니다 (번들 로딩되지 않은 경우 작동). xcassets 및 nib 파일은 자원 번들로 압축됩니다.

하면 응용 프로그램이 시작되면 nib 파일에

  1. 있는 UIImageView 위의 오류 메시지가 어떤 이미지를로드 할 수없는 경우.
  2. [있는 UIImage imageNamed : @ "OurResourceBundle.bundle/iconStatus은"]

전무 질문은 "How can I load an image from Assets.car (compiled version of xcassets) within an NSBundle?"에 관련되어 반환하지만 우리는 CocoaPods를 사용하지 마십시오.

+0

대답은 당신이 참조하는 질문에 대한 본질적으로 동일 할 것입니다. imageNamed : 메인 번들에서만로드되므로 다른 번들에서 이미지를로드하는 데 필요한 모든 작업을 수행하는 카테고리를 만들어야합니다. –

+0

시도했지만 작동하지 않습니다. 번들로 제공되는 xcassets을위한 특별한 것이 있습니다 –

+0

컴파일 된'.car' 파일을 어떻게 얻습니까? 필자의 짧은 경험으로 모든'* .xcassets' 이미지는'* .app' 디렉토리 안에 복사 된 (적절한 이름으로) 평평하게됩니다. – Rivera

답변

-1

이미지 자산 폴더가 .car 파일로 압축되면 NSBundle이 그 안에있는 에셋을 검색하는 방법을 알게됩니다. 리소스 번들에서 새 번들을 생성 해보십시오. 그런 다음 번들에 이미지의 경로를 묻습니다. 마지막으로 해당 경로에서 이미지를 만듭니다. 이것은 정적 라이브러리로 이미지 애셋과 지역화 된 문자열을 묶을 때 우리가 취하는 접근법의 일종입니다. 우리의 버전은 @ 2x 및 ipad 이미지와 같은 것들을 자동으로 처리하기 때문에 좀 더 복잡하지만 이것은 그것의 요지입니다.

NSBundle *myBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"your bundle" ofType:@"bundle"]]; 
    NSString *filePath = [myBundle pathForResource:@"icon" ofType:@"png"]; 
    UIImage *image = [UIImage imageWithContentsOfFile:filePath]; 
+1

의심이 잘못되었습니다. –

7

IOS를 7에서 엑스 코드는 메인 다발로 컴파일 한 제외 .car 어떤 파일로부터 이미지를로드 할 수 없다. 이것은 https://devforums.apple.com/message/968859#968859에서 애플 개발자에 의해 확인되었다 : 번들 매개 변수를 허용하지 않습니다

불행하게도 그 + imageNamed로, 엑스 코드는 기본 번들로 컴파일 한 제외하고 모든 차량 파일에서 이미지를로드 할 수 없습니다 이는 필요한 작업이므로 단일 번들 카탈로그에서 단일 자산 카탈로그 만 열 수 있습니다.

는 아이폰 OS 8에서는 당신이 원하는 것을 할 것으로 보인다 새로운 방법이있다 :

+ (UIImage *)imageNamed:(NSString *)name inBundle:(NSBundle *)bundle 
    compatibleWithTraitCollection:(UITraitCollection *)traitCollection 
+3

그것은 나를 위해 작동하지 않습니다. 해당 메서드는 번들 아래의 이미지를 읽는 것만 같지만 그 번들 안에있는 xcassets의 이미지는 읽지 않습니다. ( – Hlung

+0

xcasset에서 모든 이미지를 별도의 파일로 만들면이 솔루션을 찾을 수 없습니까? – Tj3n

+0

번들에있는 .xcasset 파일을 사용할 수 없다는 고통이 있지만 이미지를 구식으로 번들에 포함 시키면 문제가 없습니다. –