Pergunta

no meu iphone app, eu estou ligando com uma biblioteca estática contendo arquivos Objective C e imagens. É possível carregar uma imagem a partir de uma biblioteca estática? Eu tentei

[UIImage imageNamed:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]];

mas, obviamente, a imagem não estiver no pacote principal, é na biblioteca estática e a classe NSBundle parece ser apenas a oferta de acesso ao pacote principal e pacotes com caminhos conhecidos. Existe uma maneira de carregar uma imagem a partir de uma biblioteca estática no iPhone?

Foi útil?

Solução

Não está claro o que você quer dizer com "a imagem é [...] na biblioteca estática". Bibliotecas estáticas são arquivos simples (com a extensão .a) e contêm arquivos de objetos arquivados. Feixes, por outro lado são hierarquias de diretórios (contendo executáveis ??e outros recursos).

Se você vincular uma biblioteca estática, o código da biblioteca está incluído diretamente em seu executável. Não há arquivos são copiados para o pacote de aplicativos, então não há nenhuma maneira de copiar a imagem.

Se você tiver o arquivo de imagem com a sua biblioteca estática, você pode simplesmente copiá-lo para o seu pacote de aplicativos, adicionando uma fase de construção Copiar arquivos para o seu alvo no Xcode.

Outras dicas

A maneira mais simples é armazenar a imagem em uma matriz de caracteres em linha:

const char imageData[] = { 0x00, 0x01, 0xFF, ... };

E mais tarde, quando você precisar dele:

UIImage *image = [UIImage imageWithData:[NSData dataWithBytesNoCopy:imageData length:sizeof(imageData) freeWhenDone:NO]];

Você terá que converter dados binários da sua imagem (depois salvos como PNG ou JPEG) para o array de caracteres manualmente (ou escrever um script para fazê-lo)

Você usa um caminho absoluto na biblioteca estática fase copiar arquivos de construção e apontá-lo para o aplicativo cliente? Eu tentei algo parecido com isto e as imagens ainda não pode ser acessado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top