Dopo un sacco di googling sto facendo questa domanda. Ho una app, voglio renderla compatibile con l'iPhone5. Ho aggiunto Default-568h @ 2x alla mia app che contiene quasi 10 visualizzazioni. Così ho cambiato visualizzazioni come questa ..
In viewDidLoad:
if ([[UIScreen mainScreen] bounds].size.height >= 568) {
self.view.frame = CGRectMake(0, 0, 320, 568);
//iPhone5
}
else {
}
window.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
Ho apportato questo cambiamento nel mio didFinishLaunching con le opzioni:
window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
Dopo aver fatto questo ho trovato alcuni problemi ..
- La parte inferiore dello schermo, che non è lunga 88px, non è toccabile nemmeno con i controlli posizionati su di esso - per questo ho impostato FullScreenAtLaunch controllato negli attributi di MainWindow.xib, ma non ha funzionato
- Ho una casella di testo in vista, quando è focalizzata la tastiera, ma in cima alla vista Tastiera che sta arrivando, come sbarazzarmene.
Come risolvere questo, qualsiasi aiuto sarebbe molto apprezzato.
Grazie
risposte:
3 per risposta № 1Questo perché nella linea in cui crei il tuo UIWindow
nella classe dei delegati App probabilmente avrai qualcosa di simile a questo:
self.window = [[UIWindow alloc] initWithFrame:CGRectMake(0,0,320,480);
cambiarlo in qualcosa di simile:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
anche dove ora fai:
if ([[UIScreen mainScreen] bounds].size.height >= 568) {
self.view.frame = CGRectMake(0, 0, 320, 568);
//iPhone5
}
else {
}
Anche tu fai bene:
self.view.frame = [[UIScreen mainScreen] bounds];
Ma il più delle volte questo non è più necessario dalla vista del viewcontroller occuperà correttamente lo spazio. Se hai impostato correttamente AutoResizeMasks nel generatore di interfacce, non avrai dato l'impostazione del codice nel frame.