Niestety nie jest możliwe używanie IBDesignables
z bibliotekami statycznymi (lub statycznymi frameworkami).
To nie jest dobra odpowiedź, ale chcę podać kontekst, dlaczego.
Wydaje się, że sposób, w jaki Interfejs Builder ładuje zajęcia mają być wyświetlane jako designables jest rzeczywiście dynamicznie ładowania dynamiczny ramy, które tworzysz (a nie z aplikacji binarne), a przy użyciu klas bezpośrednio (po zmianie ich wykorzystaniem Objective-C runtime całkiem sporo).
Widać, że interfejs Builder nie ładuje swoją aplikację, a tylko poszczególne ramy z tych etapów:
- Utwórz nowy projekt Xcode
- Utwórz nowy cel ramową w projekcie
- Dodaj klasę, która jest
IBDesignable
- W serii ujęć z aplikacji utworzyć widok i ustawić jego klasę do swojego frameworka
IBDesignable
klasy
- Kliknij "Odśwież wszystkie widoki" w menu "Edytor".
- W folderze DerivedData dla projektu w katalogu
IBDesignables
widać, że został zbudowany tylko obiekt docelowy.
Kreator interfejsów faktycznie ładuje ramkę ręcznie za pomocą dlopen
. Możesz również zobaczyć, że aby to ułatwić, budując framework, program budujący interfejs faktycznie dodaje do Twojego binarnego 2 RPATH
s, więc zależności można znaleźć w niestandardowych ścieżkach (możesz to zobaczyć przy pomocy otool -L frameworkbinary
). Ta metoda ładowania pliku binarnego nie jest możliwa w przypadku bibliotek statycznych.
Na co warto myślę, że najlepiej obejście tego jest budowanie struktur dynamicznych, zamiast bibliotek statycznych, ale tylko dla IBDesignable
buduje. Będziesz musiał wykonać pewne czynności konfiguracyjne, aby to zrobić, i nie jest łatwo obejść Xcode, aby to wykonać, ale jeśli spróbujesz, możesz użyć ścieżki budowania lub środowiska, aby rozróżnić kompilacje IBDesignable
vs "normalne" kompilacje.
Nie sprecyzował, że używa CocoaPods. Problem ten wydaje się mieć wpływ na IB_DESIGNABLES, które znajdują się w bibliotece statycznej i są używane w scenorysach lub ksywkach z innego projektu. The use_frameworks! dyrektywa wydaje się mówić CocoaPods do importowania frameworków zamiast statycznych bibliotek. –