Pergunta

Eu criei um controlador de navegação com base app.A vista que se abre abaixo do nvigation bar tem um UIImageView e um monte de 'detalhes de divulgação de' botões na parte superior de te uiimage para fins de navegação bem.

O que eu estou percebendo é que esses botões s tenham se desviado do seu designer (o interface builder) posição quando eles vêm para cima no simulador.

Eu suspeito de que a barra de navegação tem algo a ver com isso, mas eles não se movem para baixo e proporcional a altura da barra de navegação.

Eu não sei como dizer a eles para manter a sua posição.

O UIImage não ultrapasse a altura da tela, mesmo com o navigaion barra no topo.

São de sua quaisquer orientações/dicas o que precisa saber sobre quando utilizar a barra de navegação no topo?

Eu estou usando o xcode 4

Obrigado

Editar:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    StartScreenViewController *controller = 
    [[StartScreenViewController alloc] initWithNibName:@"StartScreenViewController" bundle:nil];
    _navigationController = [[UINavigationController alloc] initWithRootViewController:controller];

    _navigationController.view.frame = CGRectMake(0,0, 320, 460);
    _navigationController.title = @"Test";
    //[self.window addSubview:_navigationController.view];

    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

Outra coisa é que se eu usar o 'addsubview' método, em seguida, a barra de navegação é truncado, enquanto se eu atribuir a nav controlador para a janela.rootviewcontroller então eu vejo toda a barra de navegação.

Edit 2

Aqui como meu AppDelegate.h parece

@interface TestAppDelegate : NSObject <UIApplicationDelegate> {

    IBOutlet UIView *mainView;
}

@property (nonatomic, retain) IBOutlet UIView *mainView;

@property (nonatomic, retain) IBOutlet UIWindow *window;

//@property (nonatomic, retain) IBOutlet UIViewController *viewController;

@end

Aqui é o AppDelegate.m didFinishLaunchingWithOptions método

StartScreenViewController *controller = [[StartScreenViewController alloc] initWithNibName:@"StartScreenViewController" bundle:nil];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
    navController.title = @"Test";
    navController.view.frame = CGRectMake(0, 0, 320, 460);
    [self.mainView addSubview:navController.view];    
    [self.window makeKeyAndVisible];

A MainWindow.xib contém App delegado e a janela como objetos.a Janela tem um a uiview baixo.

StartScreenViewcontroller do arquivo xib tem o UIImageview e os botões.

Foi útil?

Solução

Tire algumas capturas de tela e ver o quão longe eles estão sendo movidas para baixo.Se o seu 20px, em seguida, esse é um problema que milhares de pessoas tiveram (incluindo a mim).Eu fixo ele redefinindo o modo de exibição a ser do mesmo tamanho que ele está no IB.Por algum motivo, o iPhone tenta ser inteligente e ajudar você a redimensionar as coisas e, às vezes, ele faz de errado.

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
                navController.view.frame = CGRectMake(0, 0, 320, 460);
[self.window addSubview:navController.view];

Se isso não funcionar, então tente esta pesquisa: https://stackoverflow.com/search?q=%5Biphone%5D+20px.


EDITAR:
Eu perdi um pedaço aqui.Para contornar esse eu tive que adicionar um a uiview para a MainWindow.arquivo xib....

1.Em seu AppDelegate.h, criar uma propriedade para IBOutlet a uiview *mainView
2.Faça o @propriedade de coisa para ele e sintetizá-la na .m arquivo
3.Abra A MainWindow.xib
4.Arraste um a uiview para a Janela (NÃO o ViewController) e torná-lo apto a full frame
5.Clique com o botão direito AppDelegate objeto na janela de Documentos no IB e conectar-se a propriedade de propriedade para a uiview você acabou de adicionar.
6.Agora em AppDelegate.m...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    navController.view.frame = CGRectMake(0, 0, 320, 460);

    //[self.window addSubview:navController.view]; // old broken way
    [mainView addSubview:navController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

e AppDelegate.h:

@interface TestNavigationAppAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    TestNavigationAppViewController *viewController;
    IBOutlet UIView *mainView;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet TestNavigationAppViewController *viewController;
@property (nonatomic, retain) IBOutlet UIView *mainView;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top