2012-10-25 4 views
6

ich in meinem viewController.m haben den Hintergrund Code geschrieben:Xcode 4.5 Hintergrundbild iPhone 4, 4s, 5

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]]; 

Und ich habe die richtigen Namen der verschiedenen Bilder:

image.png for non-retina display (320x480) 

[email protected] for retina display (640x960) 

[email protected] for iPhone 5 (640x1136) 

Aber wenn ich es im Simulator starte, dauert es nicht das [email protected] für iPhone 5 Bildschirm, es nimmt nur das Bild @ 2x für 4s Bildschirm und skaliert es passend für den Bildschirm ... Ich weiß nicht, ob es da ist irgendeine Kodierung, um das Image-568h @ 2x für iPhone 5 Bildschirm zu verwenden?

Im Xcode 4.5

+0

Missbrauchen Tags nicht. –

+0

Welche Version von Xcoe verwenden Sie? –

+0

Ursprüngliche Frage: http://stackoverflow.com/questions/13055007/xcode-4-5-differen-iphone-backgroud-on-iphone-4s-and-5 Anstatt die Fragen neu zu erstellen, erwägen Sie, mehr Informationen im Original zur Verfügung zu stellen einer, ein wenig Ruf erlangend und ein Kopfgeld startend. –

Antwort

13

iPhone 5 Netzhaut, wie iPhone 4 und 4S, und das @ 2x-Bild wird automatisch für alle diese Geräte verwendet. Es ist nur das Start-Bild, das „-568h @ 2x“ für die iPhone 5. Sie müssen genannt wird, einige Codes zu schreiben, ein anderes Bild zu verwenden, wie etwas, das funktionieren würde:

NSString *filename = @"image.png"; 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
if (screenRect.size.height == 568.0f) 
    filename = [filename stringByReplacingOccurrencesOfString:@".png" withString:@"-568h.png"]; 

imageView.image = [UIImage imageNamed:filename];
+0

ist die "imageView" hier @synthesize? oder..? – Peter

+1

Schauen Sie sich dieses Beispielprojekt an: https://www.dropbox.com/s/gcc081dy0frs20z/RetinaImageTest.zip. Wenn Sie es in den verschiedenen Simulatorgeräten ausführen, werden Sie drei verschiedene (extrem hässliche) Bilder sehen :) Sie sollten natürlich unterschiedliche Auflösungen haben, aber es ist ein Proof of Concept. – TheQ

+0

Danke, so viel! Du hast mein Problem gelöst! :) – Peter

2

Ich glaube es, anzunehmen, nicht richtig ist, dass Sie den [email protected] Trick alle Bilddateien anwenden können. Ich denke es nur funktioniert für [email protected]. Dies ist die Datei, nach der iOS beim Start der App auf einem 4 "-Display-Gerät sucht, sowie das" Flag ", um 4" -Display-Unterstützung im SDK zu ermöglichen. Wenn Sie beispielsweise diese spezifische Datei einschließen, füllen Ihre Tabellenansichten den Bildschirm aus.

Ich habe nichts gelesen, um vorzuschlagen, dass Sie einfach jedes Bild mit der [email protected] Dateinamenkomponente bereitstellen und es automatisch verwenden lassen können. Sie müssen das selbst basierend auf der Bildschirmgröße, z. [UIScreen mainScreen].bounds.size.height.

3

Wenn Sie versuchen, [UIImage imageNamed:@"image.png"] zu verwenden und erwarten, dass [email protected] automatisch aus dem Bundle für iPhone 5 ausgewählt wird, wird es nicht funktionieren. Automatische Kommissionierung funktioniert nur für iPhone 4 und 4S.

Nur das Bild Standard als [email protected] genannt wird automatisch in iPhone 5.

für normale Bilder aufgenommen werden, wenn Sie für die iPhone 5 separates Bild haben, versuchen Sie diesen Code mit

CGRect screenBounds = [[UIScreen mainScreen] bounds]; 
if (screenBounds.size.height == 568) { 
    // code for 4-inch screen 
} else { 
    // code for 3.5-inch screen 
}