2013-06-11 17 views
77

So che è una nuova funzionalità e questo potrebbe non essere possibile, ma mi piacerebbe poter utilizzare un catalogo delle risorse per organizzare le mie risorse, ma accedo a tutte le mie immagini a livello di programmazione. Come potrei accedere alle mie immagini, ora? Ho ancora accedervi con i loro nomi di file in questo modo:Accesso al catalogo delle risorse a livello di programmazione

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

Apparentemente, il catalogo asset non fa riferimento l'estensione, quindi sarebbe più efficiente di accedervi senza il ".png"?

La ragione per cui sto chiedendo invece di testare per conto mio è che, anche dopo aver rimosso le mie risorse e il catalogo delle risorse, dopo aver pulito la cartella di costruzione, posso ancora accedere alle mie risorse nella mia applicazione. Questo mi impedisce di testare il Catalogo delle risorse, quando lo implemento.

Dopo aver guardato attraverso l'Asset catalogo, ho trovato il "Contents.json" per ogni attività e è formattato in questo modo:

{ 
    "images" : [ 
    { 
     "idiom" : "universal", 
     "scale" : "1x" 
    }, 
    { 
     "idiom" : "universal", 
     "scale" : "2x", 
     "filename" : "[email protected]" 
    } 
    ], 
    "info" : { 
    "version" : 1, 
    "author" : "xcode" 
    } 
} 

Sono ancora sicuro di come dovrei essere accedervi, ma forse questo aiuterà?

risposta

112

Per accedere all'immagine dal Catalogo delle risorse, è sufficiente accedere al nome del gruppo di risorse senza estensioni.

Quindi, se si aggiunge un'immagine denominata @"[email protected]" al Catalogo delle risorse, verrà creato un gruppo di risorse denominato my-button.

Ora, tutto ciò che dovete fare è accedere all'immagine in questo modo:

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

Inoltre, è possibile modificare il gruppo di attività rinominandolo (senza rinominare le immagini) o la modifica è singoli componenti. Ciò consentirà di seguire le convenzioni di denominazione più semplici e di mostrare risorse completamente diverse tra diversi UIScreenscale s senza alcun controllo scale.

Per incorporare immagini per diverse dimensioni del dispositivo, potrebbe essere necessario alternarlo sotto il sottotitolo "Dispositivi" nelle opzioni del Gruppo catalogo risorse. Here is an example of that toggle (available by right clicking the group).

+0

Le versioni R4, ovvero il supporto 568, sono disponibili. Se si visualizzano gli attributi di un set di immagini, è possibile selezionare "Specifico dispositivo" dal menu a discesa Dispositivi e quindi è possibile aggiungere un'immagine R4, che verrà visualizzata su dispositivi da 4 "con iOS 7. – bandejapaisa

+0

Esiste un modo per programmare a livello di codice accedere alle informazioni di slicing? Oltre a ottenere la proprietà capInsets dall'oggetto UIImage? – Klaas

+0

@Klaas Non sono sicuro del motivo per cui avresti bisogno di ottenerlo con qualsiasi mezzo diverso da 'UIImage'.E da quello che ho visto, no, poiché ogni immagine di categoria nel gruppo potrebbe essere un'immagine completamente diversa, quindi non ci saranno informazioni generali, come le affettatrici, disponibili. O mi sta sfuggendo qualcosa? – RileyE

1

@RileyE ha il 100% giusto. Tuttavia, dalle mie esperienze vale anche la pena notare che a volte il riferimento al catalogo delle risorse per l'immagine può contenere lo spazio bianco finale. Probabilmente non ti accorgerai se usi storyboard/xibs dato che il completamento automatico lo aggiungerà. Ma quando lo fai riferimento dal codice non è così ovvio qual è il problema.

1

Swift

È possibile ottenere un riferimento a un'immagine nella vostra Catelog patrimoniale con

UIImage(named: "myImageName") 

Non è necessario includere l'estensione.

Problemi correlati