Pergunta

Eu criei um aplicativo simples iPhone, que tem dois arquivos .xib. No delegado app no ??aplicativo fez terminar lançando I exibir o primeiro arquivo .xib chamando:

[window addSubview:myView];

e eu fazer o mesmo em uma IBAction para uma UIButton para alterar a vista para myView2.

O que eu estou achando é que há uma barra branca de cerca de 10 pixels quando eu executar o aplicativo, para ambos os pontos de vista. Eu também noto que os botões são compensadas por 10 pixels (aprox.). Então, tenho a impressão de que a visão está sendo exibido a partir de 10 pixels fora da tela e terminando curto.

Qualquer idéia de por que isso pode estar acontecendo, como posso corrigi-lo, ou como eu pode ainda depuração que está acontecendo? Eu verifiquei meus arquivos .xib e eles estão consumindo a altura total do dispositivo (isto é, sem barras brancas), de modo que este parece ser um problema dentro XCode.

EDIT: Eu já reduzimos o problema um pouco. Eu estou usando dois métodos para carregar o subexibição. Quando eu carregar a primeira vista dentro applicationDidFinishLaunching está tudo bem. No entanto, se eu substituir as duas mensagens para window com o método [self originalView], então tudo vai um pouco derem errado.

- (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];

}

Pelo que posso ver, estou sempre chamando as mesmas linhas de código, não importa se é dentro do applicationDidFinishLaunching ou em [self originalView] mas parece que window está a transformar-se um objeto diferente.

Foi útil?

Solução

Ao usar um UIViewController a maneira normal (ou seja, empurrando-o em um UINavigationController ), ajusta quadro do seu ponto de vista.

Uma vez que você está adicionando o subexibição manualmente, você tem que ajustar o quadro de si mesmo. A origem está no canto superior direito (no topo da barra de status). Você quer mudar seu ponto de vista 20 pixels para baixo.

Outras dicas

Aqui está a minha solução:

// 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];

Ele funciona muito bem para mim agora, boa sorte ~:)

No construtor de interface, você pode adicionar Simulado elementos da interface que será exibida programaticamente (como a barra de status ou a barra de navegação). Em seu inspector, selecione seu ponto de vista, e vá para a guia Atributos. Aqui você pode simular A barra de status, a barra superior, ou uma barra inferior.

Parece que você chamam pushVC a esta UIViewController no lugar errado. Eu tive o mesmo problema. Foi resolvido movendo [self.navigationController pushViewController: animated:] de viewDidLoad para viewDidAppear: em um UIViewController anterior na hierarquia.

Sempre que um estranho aparece gap, ou o ponto de vista é parcialmente escondido atrás da barra de status, que tem algo a ver com qualquer

  1. definição shouldAutorotate em seu controlador raiz - não tenho certeza se é um bug ou não, mas tente ficar consistente com o retorno dessa função para todas as sub-viewcontrollers (geralmente resulta em um viewcontroller sendo escondido por trás da barra de status)
  2. uma definição wantsFullscreen de um subexibição - definido como NO, se possível

i teve ambos os erros em meu aplicativo e resolveu-los! Espero que eu poderia poupar algum tempo (I desperdiçado muito nele)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top