Domanda

Ho creato una semplice app per iPhone che ha due file .xib. Nell'app che il delegato dell'applicazione ha terminato l'avvio, visualizzo il primo file .xib chiamando:

[window addSubview:myView];

e io faccio lo stesso su una IBAction per un UIButton per cambiare la vista in myView2.

Quello che sto scoprendo è che c'è una barra bianca di circa 10 pixel quando eseguo l'app, per entrambe le viste. Ho anche notato che i pulsanti sono sfalsati di 10 pixel (circa). Quindi ho l'impressione che la vista venga visualizzata da 10 pixel fuori dallo schermo e che termini in breve.

Qualche idea sul perché ciò potrebbe accadere, come posso risolverlo o come posso ulteriormente eseguire il debug di ciò che sta accadendo? Ho controllato i miei file .xib e stanno consumando l'intera altezza del dispositivo (cioè senza barre bianche), quindi questo sembra essere un problema all'interno di XCode.

EDIT: ho ristretto un po 'il problema. Sto usando due metodi per caricare la subview. Quando carico la prima vista in applicationDidFinishLaunching va tutto bene. Tuttavia, se sostituisco i due messaggi a window con il metodo [self originalView], allora tutto va un po 'in tilt.

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    //[self originalView];  <- I want to use this instead of the following two lines

    // Override point for customization after app launch    
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

}

-(void)endView{
    endV = [[EndViewController alloc] initWithNibName:@"EndView" bundle:nil];
    [window removeFromSuperview];
    [window addSubview:endV.view];  
}
-(void)originalView{
    viewController = [[MyAppViewController alloc] init];
    [window removeFromSuperview];
    [window addSubview:viewController.view];

}

Da quello che posso vedere, chiamo sempre le stesse righe di codice, non importa se si trova all'interno di <=> o in <=> ma sembra che <=> stia diventando un oggetto diverso.

È stato utile?

Soluzione

Quando si utilizza un UIViewController nel modo normale (ovvero spingendolo su un UINavigationController ), regola il frame della sua vista.

Dato che stai aggiungendo la sottoview manualmente, devi regolare tu stesso il frame. L'origine è nell'angolo in alto a destra (nella parte superiore della barra di stato). Volete spostare la vista di 20 pixel verso il basso.

Altri suggerimenti

Ecco la mia soluzione:

// adjust the frame of subview which is going to be add
self.navController.view.frame = CGRectMake(0, 0, 320, 460);
[self.view addSubView:self.navController.view];

Ora funziona bene per me, buona fortuna ~ :)

Nel generatore di interfaccia, è possibile aggiungere elementi di interfaccia simulati che verranno visualizzati a livello di codice (come la barra di stato o la barra di navigazione). Nel tuo ispettore, seleziona la tua vista e vai alla scheda Attributi. Qui puoi simulare la barra di stato, una barra superiore o una barra inferiore.

Sembra che tu chiami pushVC a questo UIViewController nel posto sbagliato. Ho avuto lo stesso problema. È stato risolto spostando [self.navigationController pushViewController: animated:] da viewDidLoad a viewDidAppear: in un precedente <=> nella gerarchia.

Ogni volta che appare uno strano divario, o la vista è parzialmente nascosta dietro la barra di stato, ha qualcosa a che fare con entrambi

  1. shouldAutorotate la definizione nel tuo controller di root - non sono sicuro che si tratti di un bug o no, ma cerca di rimanere coerente con il ritorno di quella funzione per tutti i subcontroller (di solito si traduce in un viewcontroller nascosto dietro la barra di stato)
  2. una definizione a schermo intero di una sottoview: se possibile, impostare su NO

Avevo entrambi i bug nella mia app e li ho risolti! Spero di poterti risparmiare un po 'di tempo (ci ho sprecato molto)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top