Programing

프로그래밍 방식으로 자산 카탈로그 액세스

lottogame 2020. 9. 3. 23:34
반응형

프로그래밍 방식으로 자산 카탈로그 액세스


나는 그것이 새로운 기능이라는 것을 알고 있으며 이것이 가능하지 않을 수 있지만 자산 카탈로그를 사용하여 자산을 구성하고 싶지만 프로그래밍 방식으로 모든 이미지에 액세스합니다. 이제 내 이미지에 어떻게 액세스합니까? 다음과 같은 파일 이름으로 여전히 액세스합니까?

[UIImage imageNamed:@"my-asset-name.png"];

겉으로는 자산 카탈로그가 확장을 참조하지 않으므로 ".png"없이 액세스하는 것이 더 효율적일까요?

내가 직접 테스트하는 대신 요청하는 이유는 내 자산과 자산 카탈로그를 제거한 다음 빌드 폴더를 정리 한 후에도 응용 프로그램에서 내 자산에 액세스 할 수 있기 때문입니다. 이로 인해 자산 카탈로그를 구현할 때 테스트 할 수 없습니다.

자산 카탈로그를 살펴본 후 각 자산에 대한 "Contents.json"을 찾았으며 다음과 같은 형식으로 지정되었습니다.

{
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x"
    },
    {
      "idiom" : "universal",
      "scale" : "2x",
      "filename" : "my-asset@2x.png"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

어떻게 액세스해야할지 잘 모르겠지만 이것이 도움이 될까요?


자산 카탈로그에서 이미지에 액세스하려면 확장자없이 자산 그룹의 이름에만 액세스하면됩니다.

따라서 @"my-button@2x.png"자산 카탈로그에 이름이 지정된 이미지를 추가하면라는 자산 그룹이 생성됩니다 my-button.

이제 다음과 같이 이미지에 액세스하기 만하면됩니다.

// Objective-C
[UIImage imageNamed:@"my-button"];
// Swift
UIImage(named: "my-button")

또한 자산 그룹의 이름을 바꾸거나 (이미지 이름을 바꾸지 않고) 개별 구성 요소를 변경하여 자산 그룹을 편집 할 수 있습니다. 이렇게하면 더 쉬운 명명 규칙을 따를 수있을뿐만 아니라 확인 UIScreen scale없이 서로 다른 에셋간에 완전히 다른 자산을 표시 할 수 있습니다 scale.

다양한 장치 크기에 대한 이미지를 통합하려면 자산 카탈로그 그룹 옵션의 "장치"부제목 아래에서 전환해야 할 수 있습니다. 다음은 해당 토글의 예입니다 (그룹을 마우스 오른쪽 버튼으로 클릭하여 사용 가능).


또한 Apple은 Swift 3을 사용하여 자산에서 이미지를 가져 오는 새로운 방법을 추가했습니다. 'Image Literal' 이라고 부르며 아래와 같이 작동합니다.

이미지 리터럴


빠른

다음을 사용하여 자산 카테고리의 이미지에 대한 참조를 얻을 수 있습니다.

UIImage(named: "myImageName")

확장을 포함 할 필요가 없습니다.


@RileyE는 100 % 맞습니다. 그러나 내 경험으로 볼 때 때때로 이미지의 자산 카탈로그 참조에 후행 공백이 포함될 수 있다는 점도 주목할 가치가 있습니다. 자동 완성 기능이 추가 할 때 스토리 보드 / xibs를 사용하면 눈치 채지 못할 것입니다. 그러나 코드에서 참조 할 때 문제가 무엇인지 명확하지 않습니다.

참고 URL : https://stackoverflow.com/questions/17052344/access-asset-catalog-programmatically

반응형