it-swarm.com.de

Wie entwickle oder migriere ich Apps 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 ist zu beachten, damit Anwendungen sowohl für ältere als auch für neue Breitbild-Bildformate "universell" sind?

495
Lukasz
  1. Laden Sie die neueste Version von Xcode herunter und installieren Sie sie.
  2. Legen Sie eine Startbildschirmdatei für Ihre App fest (auf der Registerkarte "Allgemein" Ihrer Zieleinstellungen). Auf diese Weise können Sie die volle Größe jedes Bildschirms nutzen, einschließlich der geteilten iPad-Ansichtsgrößen in iOS 9.
  3. Testen Sie Ihre App und tun Sie hoffentlich nichts anderes, da alles auf magische Weise funktionieren sollte, wenn Sie die Masken für die automatische Größenänderung richtig eingestellt oder das automatische Layout verwendet haben.
  4. Wenn nicht, passen Sie Ihre Ansichtslayouts an, vorzugsweise mit dem automatischen Layout.
  5. Wenn Sie speziell für die größeren Bildschirme etwas tun müssen, müssen Sie anscheinend die Höhe von [[UIScreen mainScreen] bounds] überprüfen, da es anscheinend keine spezifische API dafür gibt. Ab iOS 8 gibt es auch Größenklassen, die Bildschirmgrößen in reguläre oder kompakte vertikale und horizontale Größen unterteilen und empfohlen werden, um die Benutzeroberfläche anzupassen.
479
Filip Radelic

Wenn Sie eine App für das iPhone 4S oder früher erstellt haben, wird sie auf dem iPhone 5 mit Letterbox ausgeführt.

Um Ihre App an den neuen, größeren Bildschirm anzupassen, ändern Sie zunächst das Startbild in: [email protected] Seine Größe sollte 1136x640 (HxB) betragen. Ja, das Standardbild in der neuen Bildschirmgröße ist der Schlüssel, damit 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 "[email protected]" benennen, wird es nicht anstelle von "[email protected]" geladen Msgstr "" "Wenn Sie verschiedene Bilder für verschiedene Bildschirmgrößen laden müssen, müssen Sie dies programmgesteuert tun.)

Wenn Sie sehr, sehr viel Glück haben, könnte es sein ... aber aller Wahrscheinlichkeit nach Sie müssen noch ein paar Schritte unternehmen.

  • Stellen Sie sicher, dass Ihre Xibs/Views das automatische Layout verwenden, um ihre Größe zu ändern.
  • Verwenden Sie Federn und Streben, um die Größe der Ansichten zu ändern.
  • Wenn dies für Ihre App nicht gut genug ist, entwerfen Sie Ihr xib/Storyboard für eine bestimmte Bildschirmgröße und positionieren Sie es programmgesteuert für die andere.

Entwerfen Sie im Extremfall (wenn keines der oben genannten Verfahren ausreicht) die beiden Xibs und laden Sie das entsprechende in den View-Controller.

So erkennen Sie die 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
    }
}
116
Sanjay Chaudhry

Das einzige, was Sie wirklich tun müssen, ist, ein Start-Image mit dem Namen "[email protected]" zu den App-Ressourcen hinzuzufügen. In der Regel funktioniert die App (wenn Sie Glück haben) ordnungsgemäß.

Wenn die App keine Berührungsereignisse verarbeitet, stellen Sie sicher, dass das Schlüsselfenster die richtige Größe hat. Die Problemumgehung besteht darin, den richtigen Frame festzulegen:

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

Bei der Migration auf iOS 6 treten andere Probleme auf, die nicht mit der Bildschirmgröße zusammenhängen. Weitere Informationen finden Sie unter Versionshinweise für iOS 6. .

30
onegray

Manchmal (für Pre-Storyboard-Apps), wenn das Layout ausreichend unterschiedlich sein soll, lohnt es sich, je nach Gerät eine andere xib anzugeben (siehe diese Frage - Sie müssen den Code ändern, um damit umzugehen mit dem iPhone 5) im viewController init, da kein Twiddling mit Autoresizing-Masken funktioniert, wenn Sie andere 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 abzielen.

22
SomaMan

Hier finden Sie ein Nizza-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 Begrüßungs-/Standardbildschirm ( 640 x 1136 Pixel ) mit dem Namen " Default-568h @ 2x.png "

  2. Gehen Sie im iOS-Simulator zum Menü Hardware -> Gerät und wählen Sie " iPhone (Retina 4-inch ) "

  3. Erstellen Sie andere Bilder, z. 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 = "[email protected]";
public static UIImage FromBundle16x9(string path)
{
    //adopt the [email protected] 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());
    }
}
20
Manni

Es ist einfach, iPhone5 und iPhone4 über XIBs zu migrieren .........

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}
13
shankar

Ich löse dieses Problem hier . Fügen Sie einfach ~ 568h @ 2x Suffix zu Bildern und ~ 568h zu xibs hinzu. Keine weiteren Laufzeitprüfungen oder Codeänderungen erforderlich.

12
Shimanski Artem

Ich hatte das neue Standard-Startbild hinzugefügt und (beim Auschecken mehrerer anderer SE-Antworten ...) sichergestellt, dass meine Storyboards alle automatisch ihre Größe und Unteransichten hatten, die Retina jedoch immer noch einen 4-Zoll-Briefkasten aufwies.

Dann bemerkte ich, dass meine Infopliste eine Werbebuchung für "Startbild" auf "Default.png" gesetzt hatte, die ich auf diese Weise entfernt hatte und das magische Letterboxing nicht mehr erschien. Hoffentlich erspart das jemand anderem die gleiche Verrücktheit, die ich ertragen habe.

10
SkeletonJelly

Um festzustellen, ob Ihre App das iPhone 5 Retina unterstützt, verwenden Sie Folgendes: (Dies könnte robuster sein, um den Anzeigetyp, 4S Retina usw. zurückzugeben. Wie unten beschrieben, wird jedoch nur dann zurückgegeben, wenn das iPhone das iOS5 Retina als unterstützt Ja oder Nein)

Fügen Sie in einer allgemeinen ".h" -Datei Folgendes hinzu:

BOOL IS_IPHONE5_RETINA(void);

In einer allgemeinen ".m" -Datei fügen Sie hinzu:

BOOL IS_IPHONE5_RETINA(void) {
    BOOL isiPhone5Retina = NO;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        if ([UIScreen mainScreen].scale == 2.0f) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960){
                //NSLog(@"iPhone 4, 4s Retina Resolution");
            }
            if(result.height == 1136){
                //NSLog(@"iPhone 5 Resolution");
                isiPhone5Retina = YES;
            }
        } else {
            //NSLog(@"iPhone Standard Resolution");
        }
    }
    return isiPhone5Retina;
}
9
Mike

In einer constants.h -Datei können Sie folgende definierte Anweisungen hinzufügen:

 #define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
 #define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
 #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON) 
 #define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)
9
K S

Ich denke, es wird nicht in allen Fällen funktionieren, aber in meinem speziellen Projekt hat es mir das Duplizieren von NIB-Dateien erspart:

Irgendwo in common.h können Sie diese Definitionen basierend auf der Bildschirmhöhe vornehmen:

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5)

In Ihrem Basis-Controller:

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (IS_IPHONE_5) {
        CGRect r = self.view.frame;
        r.size.height = HEIGHT_IPHONE_5 - 20;
        self.view.frame = r;
    }
    // now the view is stretched properly and not pushed to the bottom
    // it is pushed to the top instead...

    // other code goes here...
}
9
iutinvg

Erstellen Sie zunächst zwei xibs und hängen Sie alle Delegierten der Hauptklasse an die xib an. Anschließend können Sie die unten in Ihrer appdelegate.m -Datei angegebene Bedingung eingeben

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    if ([[UIScreen mainScreen] bounds].size.height == 568)
        {

        self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone5" bundle:nil];
        }

        else
        {
             self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone4" bundle:nil];

        }

sie können es überall im Programm verwenden, je nach Ihren Anforderungen, auch in Ihren ViewController Klassen. Am wichtigsten ist, dass Sie zwei xib Dateien getrennt für iphone 4(320*480) and iphone 5(320*568) erstellt haben.

8
mandeep

Versuchen Sie die folgende Methode in einer Singleton-Klasse:

-(NSString *)typeOfDevice
    {
        if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                return @"Iphone";
            }
            if(result.height == 568)
            {
                return @"Iphone 5";
            }
        }
        else{
            return @"Ipad";;
        }


        return @"Iphone";
    }
7

Das Aktivieren von bounds mit 568 schlägt im Querformat fehl. Das iPhone 5 wird nur im Hochformat gestartet. Wenn Sie jedoch Rotationen unterstützen möchten, muss das iPhone 5 "check" auch dieses Szenario berücksichtigen.

Hier ist ein Makro, das den Orientierungsstatus behandelt:

#define IS_IPHONE_5 (CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size, CGSizeMake(640, 1136)))

Die Verwendung des Aufrufs 'preferredMode' stammt aus einem anderen Beitrag, den ich vor einigen Stunden gelesen habe, sodass ich nicht auf diese Idee gekommen bin.

7
Christopher

Sie können die Funktion Auto Layout verwenden und das Design mit der Bildschirmauflösung des iPhone 5 erstellen. In diesem Fall sollten Sie jedoch über ausreichende Kenntnisse des Layout-Managers verfügen.

7
DeveshM

Ich hatte noch nie ein derartiges Problem mit einem Gerät, da ich eine Codebasis für alle ohne fest codierte Werte hatte. Was ich tue, ist, das Bild mit der maximalen Größe als Ressource anstatt eines für jedes Gerät zu haben. Zum Beispiel würde ich eine für das Retina-Display haben und diese als Seitenanpassung anzeigen, so dass es Ansichten wie auf jedem Gerät gibt. Entscheiden Sie sich beispielsweise zur Laufzeit für den Rahmen der Schaltfläche. Hierfür verwende ich den% -Wert der Patentansicht. Wenn ich möchte, dass die Breite der Hälfte der übergeordneten Ansicht entspricht, nehme ich 50% der übergeordneten Ansicht und das gleiche gilt für Höhe und Mitte.

Damit brauche ich nicht mal die xibs.

6
infiniteLoop

Zeigen Sie zuerst dieses Bild. In diesem Bild wird eine Warnung für die Unterstützung von Retina 4 angezeigt. Klicken Sie also auf diese Warnung und dann auf Hinzufügen, damit der Begrüßungsbildschirm von Retina 4 automatisch in Ihr Projekt eingefügt wird.

Show image here

und nachdem Sie diesen Code verwendet haben:

if([[UIScreen mainScreen] bounds].size.height == 568)
    {
        // For iphone 5
    }
    else
    {
        // For iphone 4 or less
    }
6

Mit dieser Definition können Sie basierend auf der Bildschirmgröße berechnen, ob Sie das iPhone 5 verwenden:

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

verwenden Sie dann eine einfache if -Anweisung:

    if (IS_IPHONE_5) {

    // What ever changes
    }
5
Mutawe

Peter, du solltest dir Canappi wirklich ansehen, es erledigt alles für dich, alles, was du tun musst, ist das Layout als solches festzulegen:

button mySubmitButton 'Sumbit' (100,100,100,30 + 0,88,0,0) { ... }

Von dort generiert Canappi den richtigen Objective-C-Code, der das Gerät erkennt, auf dem die App ausgeführt wird, und verwendet:

(100,100,100,30) for iPhone4
(100,**188**,100,30) for iPhone 5

Canappi funktioniert wie Interface Builder und Story Board zusammen, nur dass es in Textform vorliegt. Wenn Sie bereits XIB-Dateien haben, können Sie diese konvertieren, damit Sie nicht die gesamte Benutzeroberfläche von Grund auf neu erstellen müssen.

4
metaprogrammer

Sie können die Bildschirmgröße manuell überprüfen, um festzustellen, auf welchem ​​Gerät Sie sich befinden:

#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)

float height = DEVICE_IS_IPHONE5?568:480;
if (height == 568) {
    // 4"

} else {

    // 3"

}
4
Robot1987

Dies ist ein echter universeller Code, Sie können 3 verschiedene Storyboards erstellen:

Stellen Sie den Universal-Modus Ihres Projekts ein und legen Sie Ihre Hauptstory für das iPhone mit dem iPhone5-Storyboard und die für das iPad mit dem Storyboard fest. Fügen Sie nun ein neues Storyboard-Ziel für das iPhone hinzu und ändern Sie die Auflösung für das iPhone 4s oder weniger. Implementieren Sie jetzt Ihr AppDelegate. m

iPhone4/4s (ist dasselbe für 3/3Gs) eines für iPhone5 und mache das Projekt niversal, mit einem neuen Storyboard-Ziel für iPad, Jetzt in AppDelegate.m unter didFinishLaunching diesen Code hinzufügen:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

//----------------HERE WE SETUP FOR IPHONE4/4s/iPod----------------------

        if(result.height == 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }

//----------------HERE WE SETUP FOR IPHONE3/3s/iPod----------------------

        if(result.height == 480){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }

        return YES;
 }

Sie haben also eine Universal-App für iPhone 3/3Gs/4/4s/5 All gen of iPod und All type of iPad erstellt.

Denken Sie daran, alle IMGs in myImage.png und [email protected] zu integrieren.

3
BlackSheep

Sie könnten diesen Code hinzufügen:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960) {
                NSLog(@"iPhone 4 Resolution");
            }
            if(result.height == 1136) {
              NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }
3
dbramhall

Der beste Weg, um mit solchen Problemen umzugehen und einige Bedingungen zu vermeiden, die für die Überprüfung der Gerätehöhe erforderlich sind, besteht meiner Meinung nach darin, den relativen Rahmen für Ansichten oder ein beliebiges UI-Element zu verwenden, das Sie Ihrer Ansicht hinzufügen. Beispiel: Wenn Sie hinzufügen Ein UI-Element, das Sie möchten, sollte sich unten in der Ansicht oder direkt über der Tab-Leiste befinden. Dann sollten Sie den y-Ursprung in Bezug auf die Höhe Ihrer Ansicht oder in Bezug auf die Tab-Leiste (falls vorhanden) angeben. Außerdem verfügen wir über eine Eigenschaft zur automatischen Größenänderung. Ich hoffe das wird für dich funktionieren

2
Pranav Bhardwaj

Wenn Sie eine bereits vorhandene App in Universal konvertieren müssen, müssen Sie die entsprechende xib-Datei auswählen -> Dienstprogramme anzeigen -> Größeninspektor anzeigen.

Im Größeninspektor wird die automatische Größenänderung angezeigt. Mit diesem Tool können Sie in eine vorhandene iOS-App konvertieren.

1
Prad

Anstatt eine Reihe von Bedingungen zu verwenden, können Sie die Größe Ihrer Ansicht automatisch anhand der Bildschirmgröße ändern.

int h = [[UIScreen mainScreen] bounds].size.height;
int w = [[UIScreen mainScreen] bounds].size.width;
self.imageView.frame = CGRectMake(20, 80, (h-200), (w-100));

In meinem Fall möchte ich eine Ansicht, die den Raum zwischen einigen Eingabefeldern oben und einigen Schaltflächen unten ausfüllt, also die obere linke Ecke fest und die untere rechte Ecke variabel, basierend auf der Bildschirmgröße. Meine App füllt die Bildansicht mit dem Foto, das von der Kamera aufgenommen wurde, damit ich den gesamten verfügbaren Speicherplatz nutzen kann.

1
Charles Jaimet

Wählen Sie unter Verwendung von xCode 5 unter "Projekt> Allgemein" die Option "In Asset-Katalog migrieren" aus.

Verwenden Sie dann "Im Finder anzeigen", um Ihr Startbild zu finden. Sie können es als Dummy-Bearbeitung auf 640 x 1136 bearbeiten und dann wie in der folgenden Abbildung gezeigt in den Asset-Katalog ziehen.

Stellen Sie sicher, dass sowohl im iOS7- als auch im iOS6 R4-Bereich ein Bild mit einer Größe von 640 x 1136 vorhanden ist. Wenn Sie die App das nächste Mal starten, werden die schwarzen Balken ausgeblendet und die App verwendet einen 4-Zoll-Bildschirm

enter image description here

0
Alex Stone

Beim Testen auf einem iOS-Gerät und einem iOS-Simulator ist ein kleines Problem aufgetreten. Es scheint, dass der Simulator (XCode 6.0.1) in [[UIScreen mainScreen] bounds].size je nach Ausrichtung des Geräts geschaltete Werte für Breite und Höhe liefert.

Dies kann daher ein Problem sein, wenn Sie die richtige physische Bildschirmgröße bestimmen. Dieser Code hilft auch, alle 2014 zu unterscheiden. IPhone Modellgenerationen:

  • iPhone 4s
  • iPhone5 (und iPhone5s)
  • iPhone6 ​​(und iPhone6 ​​+)

Sie kann auch leicht geändert werden, um die Unterscheidung zwischen z.B. iPhone6 ​​von iPhone6 ​​+.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    {
        if (iOSDeviceScreenSize.width > 568 || // for iOS devices
            iOSDeviceScreenSize.height > 568) // for iOS simulator
        {   // iPhone 6 and iPhone 6+

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone6
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6" bundle:nil];

            NSLog(@"loaded iPhone6 Storyboard");
        }
        else if (iOSDeviceScreenSize.width == 568 || // for iOS devices
                 iOSDeviceScreenSize.height == 568) // for iOS simulator
        {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone5
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];

            NSLog(@"loaded iPhone5 Storyboard");
        }
        else
        {   // iPhone 3GS, 4, and 4S and iPod Touch 3rd and 4th generation: 3.5 inch screen (diagonally measured)

                // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
            storyboard = [UIStoryboard story    boardWithName:@"MainStoryboard_iPhone" bundle:nil];

                NSLog(@"loaded iPhone4 Storyboard");
        }
    }
    else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {   // The iOS device = iPad

        storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPadnew" bundle:nil];

        NSLog(@"loaded iPad Storyboard");
    }

    // rest my code
}
0
vedrano

Ich würde vorschlagen, Autoresizing Mask in Ihren Anwendungen entsprechend Ihrer Benutzeroberfläche zu verwenden. Es spart viel Ärger und ist besser als die Erstellung einer anderen Benutzeroberfläche für iPhone 4 und 5 Bildschirme.

0
Geet

Verwenden Sie die Funktion Auto Layout für Ansichten. Es passt sich automatisch allen Auflösungen an.

Erstellen Sie zwei xibs für einen Controller mit einem Controllernamen mit dem Suffix ~ iphone oder ~ ipad. Zur Kompilierungszeit nimmt Xcode das richtige xib basierend auf dem Gerät.

Verwenden Sie Größenklassen, wenn Sie eine einzige xib für iPhone und iPad erstellen möchten, wenn die Ansicht einfach genug ist, um sie auf iPhone und iPad zu portieren.

0
Praveen Matanam

Hinweis: In neuem Xcode müssen Sie diese Bilddatei [email protected] zu Assets hinzufügen

0
Michal Gumny