2015-10-11 10 views
8

Tworzę strąk i mam katalog zasobów obrazów, który chciałbym użyć. W moim .podspec pliku, mam go skonfigurować tak:Nie można załadować obrazów z .xcasset w CocoaPods

s.resource_bundles = { 
    'MyPodResources' => ['*.xcassets'] 
} 

i Images.xcassets znajduje się w katalogu głównym na kapsule.

Kiedy próbuję załadować obrazy za pomocą imageNamed(), po prostu nie działa. Nie pojawia się błąd ani ostrzeżenie, ale nie są wyświetlane żadne obrazy.

Oto zabawa - jeśli spróbuję dodać obraz w Main.storyboard w przykładowej aplikacji, mogę wybrać obraz i pokazuje się dobrze w Konstruktorze interfejsu. Jednak po uruchomieniu przykładowej aplikacji obraz nie jest widoczny.

Przejrzałem wszystkie problemy z GH i nadal nie mogę znaleźć rozwiązania tego problemu ... Czy jest to problem Xcode 7/iOS 9?

Dzięki!

+1

wydawać się problemem członkostwa docelowej –

+0

co jest 'imageLoad'? Jeśli używasz funkcji imageNamed, ładuje obraz z domyślnego pakietu, więc musisz określić pakiet MyPodResources bezpośrednio, aby załadować z niego obraz. Spróbuj użyć rozwiązania z tego pytania: http://stackoverflow.com/questions/26158980/impossible-to-load-an-image-in-xcassets-on-bundle – iyuna

+0

@Iyuna sorry, mean imageNamed. Spróbuję załadować go z pakietu, ale podczas moich badań znalazłem informację, że nie powinno to być potrzebne w przypadku CocoaPods - powinno to automatycznie zawierać pakiet w jakiś sposób ... – Jure

Odpowiedz

7

W końcu napisałem rozszerzenie dla UIImage i umieściłem je w katalogu pod. Wygląda to tak:

class func bundledImage(named: String) -> UIImage? { 
    let image = UIImage(named: named) 
    if image == nil { 
     return UIImage(named: named, inBundle: NSBundle(forClass: MyBasePodClass.classForCoder()), compatibleWithTraitCollection: nil) 
    } // Replace MyBasePodClass with yours 
    return image 
} 

Używam go lubię: imageView.image = UIImage.bundledImage("icon-grid")

To jest to, nadzieję, że ktoś znajdzie to przydatne!

0

w Swift 3:

let bundle: Bundle = Bundle(identifier: "Framework Bundle ID")! 
yourImageView.image = UIImage(named: "imageNameInAssets", in: bundle, compatibleWith: nil) 
Powiązane problemy