2012-06-10 7 views
7

Ich bin fast fertig mit der iPhone-Version meiner App, als ich erkannte, dass ich (wahrscheinlich?) Bedingungen für jedes UI-Element schreiben muss, weil sie unterschiedliche Grafiken verwenden. Dies wird meinen Code sehr unordentlich machen. Ich habe 15 verschiedene benutzerdefinierte UI-Steuerelemente und ich kann mir nicht vorstellen, dass die Einrichtung eines bedingten ("if ipad laden image_ipad, wenn iphone laden image_iphone") für jede Methode der beste Weg ist, dies zu tun. Kann jemand eine bestimmte Technik vorschlagen, um damit umzugehen? Oder gibt es eine Möglichkeit, Bilder zwischen Retina und Regular zu benennen?Wie kann der Code minimiert werden, wenn verschiedene Bilder für iPad und iPhone verwendet werden?

+0

Warum sollten Sie keine Standardsteuerelemente verwenden, die automatisch zwischen iPhone und iPad skalieren, anstatt benutzerdefinierte Steuerelemente zu erstellen? – melsam

+0

All meine Benutzeroberfläche ist benutzerdefinierte Grafiken. UIKit steuert, meine eigenen Bilder. – frankie

+0

Warum haben sie unterschiedliche Größen auf dem iPad? Fast jedes UIKit Control ist auf beiden Geräten gleich groß. Nur die Navigationsleiste ändert ihre Höhe. – calimarkus

Antwort

7

Sie müssen nur den grundlegenden Image-Namen übergeben .. sagen wir, unser Image-Name ist "Apple.png" ,, dann werden Sie den get Bildnamen wie diese UIImage *image = [UIImage ImageNamed:@"Apple.png"] schreiben und der Name für das Bild für die folgenden Fälle wird sein:

1. iPad> put ~ ipad, wird Bild Name sein "Apple~ipad.png"

2. iPhone> put ~ iphone, Bild Name "Apple~iphone.png"

3.for Retina sehen sein> put @ 2x, Bildname ist "[email protected]"

4.wenn Sie haben diffrenet Bild für Retina diplay für ipad und iphone es so sein wird ,, für iPad "[email protected]~ipad.png" ,, für iPhone "[email protected]~iphone.png"

Wenn Sie es wie dieser iOS Name wird die beste Übereinstimmung Bildnamen und laden Sie es erkennen.

+1

scheint legitime Antwort –

+0

Danke. Das ist eine sehr hilfreiche Antwort. – frankie

2

Wenn Sie Versionen für Retina und nicht Retina haben möchten, müssen Sie nur zwei Versionen Ihres Assets in Ihrem Bundle speichern. Wenn Ihr Asset button.png heißt, speichern Sie:

-button.png für die Nicht-Retina-Version. [email protected] für die Retina-Display-Version.

Ihr Code:

UIImage * myImage = [UIImage imageNamed:@"button.png"]; 

Das System wird automatisch für das @ 2x.png überprüfen, ob Netzhaut oder es wird die andere für nicht Retina wählen

Sie können myImage in Ihrer benutzerdefinierten UI platzieren und das OS erledigt den Rest für Sie ;-)

Verwandte Themen