iPhone Design de INTERFACE para Controlador da Navegação botões mover para baixo
-
14-11-2019 - |
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.
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;