Frage

Ich habe eine iPad -App, die ich universell machen möchte, aber das scheint alarmierend schwierig. Ich habe die Dinge verändert, so dass ich beide Builds unterstütze, aber beim Aufbau bekomme ich viele Fehler bei der Verwendung von Uipopovers. Hier sind meine Fragen:

  • Warum tut UI_USER_INTERFACE_IDIOM() nicht kompilieren oder registrieren Sie sich bei 3.1.3?
  • Kann ich in einer Klassendefinition basierend auf bedingten Variablen haben? UI_USER_INTERFACE_IDIOM()?
  • Wenn nicht, sollte ich zwei verschiedene View -Controller machen?

Vielen Dank!

War es hilfreich?

Lösung

Warum kompilieren oder registrieren Sie sich nicht auf 3.1.3?

Das UI_USER_INTERFACE_IDIOM Makro ist erst mit 3.2 verfügbar. Gleiche Einschränkungen für die userInterfaceIdiom Eigentum von Uidevice. Dies bedeutet, dass Sie mit SDK 3.2 nur eine universelle Anwendung erhalten können.

Kann ich bedingt Variablen in einer Klassendefinition haben, die auf ui_user_interface_idiom () basiert?

Nr. Der UI_USER_INTERFACE_IDIOM Makro ist nur eine Laufzeitverknüpfung, um die aktuelle UI -Idiom des Geräts zu erhalten.

Wenn nicht, sollte ich zwei verschiedene View -Controller machen?

Wenn Sie zwischen den beiden Geräten eine sehr unterschiedliche Benutzeroberfläche haben, ist es klüger, zwei verschiedene Ansichtsregler zu verwenden und die richtige zur Laufzeit (z. UI_USER_INTERFACE_IDIOM Makro.

Andere Tipps

Ich hatte ziemlich viel Glück, nur das Ziel auszuwählen und dann das aktuelle Ziel für das iPad zu projizieren.

Meine App ist ziemlich einfach und besteht hauptsächlich aus Tabellenansichten und Webviews, aber es lohnt sich, ein Backup zu erstellen und zu versuchen ...

Und ja, Sie müssen es als 3.2 -App einreichen, die auf 3.1 abzielen kann.*

Es gibt auch viele andere Dinge, die Sie tun müssen: Stellen Sie sicher, dass es bei jeder Orientierung angesehen werden kann (wurde das erste Mal dafür abgelehnt). Stellen Sie sicher, dass Sie alle neuen Bilder erstellt haben. Sie müssen 3 oder 4 Symbole haben, anstatt nur eine wie eine iPhone -App, die benötigt wird. (iPad -Symbol, iPhone -Symbol, kleines Symbol für Spotlight usw.). Und natürlich iPad -Screenshots für den Laden.

Eine wirklich gute Möglichkeit, mit der ich testet, ob es sich um ein iPad oder ein iPhone handelt, besteht darin, zu überprüfen, ob das Gerät einen Split -View -Controller verwenden kann, da für die absehbare Zeit kein Gerät mit einem so kleinen Bildschirm wie ein iPhone in der Lage sein kann, den Split zu verwenden Ansichtskontroller. Ich habe gerade eine Funktion für mich erstellt:

+(BOOL)isIpad{ return NSClassFromString(@"UISplitViewController") != nil; }

Dann überall in meiner App, dass ich je nach Gerät etwas anderes anzeigen möchte, mache ich nur einen Scheck:

int width = 150;
if([NabAppDelegate isIpad]){
   width = 350;
} else {
   width = 150;
}
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5,10,width,25)];

Dies ist viel besser als die Überprüfung der Betriebssystemversion, wie ich gesehen habe, dass einige dies vorgeschlagen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top