Come altri hanno sottolineato, il raggruppamento di un file di pennini con una libreria statica nello stesso modo in cui è possibile raggruppare un pennino con un framework non è possibile. Una libreria statica contiene solo codice compilato. Non è un contenitore per una raccolta di codice e altre risorse.
Detto questo, se sei serio riguardo a questo hai un'opzione che avrebbe lo stesso effetto. Fondamentalmente sarai basato su64 codificare il tuo pennino in una stringa e ricostituirlo in fase di runtime. Ecco la mia ricetta:
1) compila il tuo file .xib in formato binario .nib. Usa XCode o ibtool.
2) utilizzare uno strumento per codificare il .nib come testo di base64. Su OSX è possibile utilizzare openssl
per fare questo dal terminale:
openssl base64 -in myNib.nib -out myNib.txt
3) copia/incolla la stringa Base64 in uno dei file di origine. Costruire un NSString da esso:
NSString* base64 = @"\
TklCQXJjaGl2ZQEAAAAJAAAAHgAAADIAAAA2AAAAjAAAAG4AAADuAwAAEQAAAPwG\
AACHgIaChoGPh4eCjoGJj46CnYGCnoGCn4GBoIKEooaKqIGOqYGCqoGQq4iMs4WC\
uIGEuYePwIaBxoWMy4SCz4GG0IGI0YWM1oGE14aL3YeO5IGE5YeC7IGF7YGKVUlG\
...
ZVN0cmluZwCHgQ0AAABVSUZvbnQAiIBOU0FycmF5AIeATlNGb250AI6AVUlQcm94\
eU9iamVjdACIgQMAAABVSUNvbG9yAIeAVUlWaWV3AA==";
4) scrivere codice per decodificare la stringa base64 in un NSData:
NSData* d = [[NSData alloc] initWithBase64EncodedString: base64 options: NSDataBase64DecodingIgnoreUnknownCharacters];
5) costruire un'UINib dal NSData:
UINib* nib = [UINib nibWithData: d bundle: nil];
6) Usa il tuo pennino:
NSArray* nibItems = [nib instantiateWithOwner: nil options: 0];
Ora potresti finire per dover cambiare alcune cose nel tuo codice. Se stai creando i controller di visualizzazione dei pennini utilizzando init
o initWithNibName:bundle:
, questo non funzionerà. Perché? Poiché tali meccanismi appaiono in un pacchetto (in genere il pacchetto di app) per il pennino e il pennino non sarà lì. Ma puoi aggiustare qualsiasi controller di vista nel tuo codice per caricare dal tuo UINib che abbiamo appena ricostituito. Ecco un collegamento che descrive un processo per questo: http://www.indelible.org/ink/nib-loading/
È possibile trovare rapidamente che sono necessarie altre risorse per il codice oltre al proprio .nib. Per esempio. immagini. È possibile utilizzare lo stesso approccio per incorporare immagini o qualsiasi altra risorsa nella libreria statica.
A mio parere, il costo per gli sviluppatori del flusso di lavoro necessario per mantenere aggiornato questo pennino incorporato è piuttosto alto. Se fossi in me, creerei solo un quadro e lo distribuirò.
Creare invece il VC in codice? – Kevin
Potrei aver frainteso il problema ma sembra che ci siano pochi post su Internet. Ecco alcuni: * http://www.galloway.me.uk/tutorials/ios-library-with-resources/ * http://www.arcanelab.com/post/43939133725/creating-and -using-a-static-library-with-a-resource –
Sono andato avanti e ho creato un esempio funzionante. Ci sono volute poche ore! Controlla la mia risposta. – nielsbot