504 Stimmen

Wie entwickelt oder migriert man Anwendungen für die iPhone 5 Bildschirmauflösung?

Das neue iPhone 5 Display hat ein neues Seitenverhältnis und eine neue Auflösung (640 x 1136 Pixel).

Was ist erforderlich, um neue Anwendungen zu entwickeln oder bereits vorhandene Anwendungen auf die neue Bildschirmgröße umzustellen?

Was sollten wir beachten, um Anwendungen sowohl für die älteren Bildschirme als auch für das neue Breitbildformat "universell" zu machen?

485voto

Filip Radelic Punkte 26548
  1. Downloaden und installieren Sie die neueste Version von Xcode .
  2. Legen Sie eine Startbildschirmdatei für Ihre Anwendung fest (auf der Registerkarte Allgemein Ihrer Zieleinstellungen). So können Sie die volle Größe jedes Bildschirms nutzen, einschließlich der geteilten iPad-Ansichtsgrößen in iOS 9.
  3. Testen Sie Ihre Anwendung, und tun Sie hoffentlich nichts weiter, da alles wie von Zauberhand funktionieren sollte, wenn Sie die Masken für die automatische Größenanpassung richtig eingestellt oder das automatische Layout verwendet haben.
  4. Wenn dies nicht der Fall ist, passen Sie Ihre Ansichtslayouts an, vorzugsweise mit Auto-Layout.
  5. Wenn es etwas gibt, das Sie speziell für die größeren Bildschirme tun müssen, dann sieht es so aus, als müssten Sie die Höhe der [[UIScreen mainScreen] bounds] da es keine spezielle API dafür zu geben scheint. Ab iOS 8 gibt es auch Größenklassen, die Bildschirmgrößen in regulär oder kompakt vertikal und horizontal abstrahieren und empfohlen werden, um Ihre Benutzeroberfläche anzupassen.

117voto

Sanjay Chaudhry Punkte 3181

Wenn du eine App für das iPhone 4S oder früher entwickelt hast, wird sie auf dem iPhone 5 im Letterbox-Format ausgeführt.

Um Ihre Anwendung an den neuen, größeren Bildschirm anzupassen, müssen Sie als erstes das Startbild ändern: Default-568h@2x.png. Seine Größe sollte 1136x640 (HxB) betragen. Ja, das Standardbild in der neuen Bildschirmgröße ist der Schlüssel dazu, dass Ihre App den gesamten Bildschirm des neuen iPhone 5 einnimmt. .

(Beachten Sie, dass die Namenskonvention nur für das Standardbild gilt. Wenn Sie ein anderes Bild "Image-568h@2x.png" nennen, wird es nicht anstelle von "Image@2x.png" geladen. Wenn Sie verschiedene Bilder für verschiedene Bildschirmgrößen laden müssen, müssen Sie dies programmatisch tun).

Wenn Sie sehr, sehr viel Glück haben, könnte es das sein... aber höchstwahrscheinlich, müssen Sie ein paar Schritte mehr machen.

  • Vergewissern Sie sich, dass Ihre Xibs/Views Auto-Layout verwenden, um ihre Größe zu ändern.
  • Verwenden Sie Federn und Streben zur Größenänderung von Ansichten.
  • Wenn dies für Ihre Anwendung nicht ausreicht, entwerfen Sie Ihre xib/storyboard für eine bestimmte Bildschirmgröße und positionieren Sie sie programmatisch für die andere.

Im Extremfall (wenn keine der oben genannten Möglichkeiten ausreicht), entwerfen Sie die beiden Xibs und laden Sie die entsprechende in den View-Controller.

Zum Erkennen der Bildschirmgröße:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}

30voto

onegray Punkte 5005

Das Einzige, was Sie tun müssen, ist, ein Startbild mit dem Namen "Default-568h@2x.png" zu den App-Ressourcen hinzuzufügen, und im Allgemeinen (wenn Sie Glück haben) wird die App korrekt funktionieren.

Wenn die Anwendung keine Berührungsereignisse verarbeitet, müssen Sie sicherstellen, dass das Tastenfenster die richtige Größe hat. Die Abhilfe besteht darin, den richtigen Rahmen einzustellen:

[window setFrame:[[UIScreen mainScreen] bounds]]

Bei der Umstellung auf iOS 6 gibt es weitere Probleme, die nicht mit der Bildschirmgröße zusammenhängen. Lesen Sie iOS 6.0 Versionshinweise für Einzelheiten.

22voto

SomaMan Punkte 4088

Manchmal (bei Anwendungen vor dem Storyboard), wenn das Layout ausreichend unterschiedlich sein wird, lohnt es sich, eine andere xib je nach Gerät anzugeben (siehe diese Frage - Sie müssen den Code ändern, um mit iPhone 5) in der viewController init, wie keine Menge von twiddling mit Auto-Sizing-Masken wird funktionieren, wenn Sie unterschiedliche Grafiken benötigen.

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    NSString *myNibName;
    if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
    else myNibName = @"MyNib";

    if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {

...

Dies ist nützlich für Apps, die auf ältere iOS-Versionen ausgerichtet sind.

20voto

Manni Punkte 11058

Hier finden Sie ein schönes Tutorial (für MonoTouch, aber Sie können die Informationen auch für Nicht-MonoTouch-Projekte verwenden):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5-ios-6-today/

  1. Erstellen Sie ein neues Bild für Ihren Splash-/Standardbildschirm ( 640 x 1136 Pixel ) mit dem Namen " Default-568h@2x.png "

  2. In der iOS-Simulator gehen Sie in das Menü Hardware -> Gerät, und wählen Sie " iPhone (Retina 4-Zoll) "

  3. Andere Bilder erstellen, z. B. Hintergrundbilder

  4. Erkennen Sie das iPhone 5, um Ihre neuen Bilder zu laden:


public static bool IsTall
{
    get {
        return UIDevice.currentDevice.userInterfaceIdiom
                    == UIUserInterfaceIdiomPhone
                && UIScreen.mainScreen.bounds.size.height
                    * UIScreen.mainScreen.scale >= 1136;
    }
}

private static string tallMagic = "-568h@2x";
public static UIImage FromBundle16x9(string path)
{
    //adopt the -568h@2x naming convention
    if(IsTall())
    {
        var imagePath = Path.GetDirectoryName(path.ToString());
        var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
        var imageExt = Path.GetExtension(path.ToString());
        imageFile = imageFile + tallMagic + imageExt;
        return UIImage.FromFile(Path.Combine(imagePath,imageFile));
    }
    else
    {
        return UIImage.FromBundle(path.ToString());
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X