Pergunta sobre iphone, uiview, xib, xcode, window – Não tenho certeza porque o UIView está sendo desenvolvido por cerca de 10px

10

Eu criei um aplicativo simples para iPhone que possui dois arquivos .xib. No aplicativo delegado no aplicativo finalizou a inicialização, exibi o primeiro arquivo .xib chamando:

<code>[window addSubview:myView];
</code>

e eu faço o mesmo em uma IBAction para um UIButton para mudar a view para myView2.

O que estou descobrindo é que há uma barra branca de cerca de 10 pixels quando eu executo o aplicativo, para ambas as visualizações. Eu também noto que os botões são compensados ​​por 10 pixels (aprox.). Então fico com a impressão de que a exibição está sendo exibida a partir de 10 pixels da tela e terminando em breve.

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

EDIT: eu reduzi o problema um pouco. Estou usando dois métodos para carregar a subvisualização. Quando eu carrego a primeira vista dentroapplicationDidFinishLaunching tudo está bem. No entanto, se eu substituir as duas mensagens parawindow com o[self originalView] método, então tudo vai um pouco descontrolado.

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

}
</code>

Pelo que vejo, estou sempre chamando as mesmas linhas de código, não importa se está dentro doapplicationDidFinishLaunching ou em[self originalView] mas parece quewindow está se transformando em um objeto diferente.

Sua resposta

5   a resposta
2

você pode adicionar elementos de interface simulados que aparecerão programaticamente (como a barra de status ou a barra de navegação). Em seu inspetor, selecione sua visualização e vá para a guia Atributos. Aqui você pode simular a barra de status, uma barra superior ou uma barra inferior.

5

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

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

1

UIViewController no lugar errado. Eu tive o mesmo problema. Foi resolvido movendo[self.navigationController pushViewController: animated:] deviewDidLoad paraviewDidAppear: em um anteriorUIViewController na hierarquia.

12

empurrando-o em um UINavigationController), ajusta o quadro de sua visão.

Como você está adicionando a subvisualização manualmente, é necessário ajustar o quadro. A origem está no canto superior direito (na parte superior da barra de status). Você quer mudar sua visão para 20 pixels abaixo.

Todos os exemplos que vi usam o UINavigationController para exibir uma hierarquia de listas, é para isso que ele é usado apenas? Ou posso usá-lo para controlar quais exibições são exibidas, mesmo que elas não precisem de um NavigationBar, etc? mac_55
1

ou a visão está parcialmente escondida atrás da barra de status, ela tem algo a ver com

shouldAutorotate definição no seu controlador de raiz - não tenho certeza se é um bug ou não, mas tente ficar consistente com o retorno dessa função para todos os sub-viewcontrollers (geralmente resulta em um viewcontroller sendo escondido por trás da barra de status)uma definição wantFullscreen de uma subvisualização - defina para NO, se possível

Eu tive dois bugs no meu aplicativo e resolvi-los! Espero que eu possa te poupar algum tempo (eu perdi muito com isso)

Perguntas relacionadas