Domanda

Ho creato un'app basata su controller di navigazione. La visione che si apre sotto la barra di nvorizzazione ha una UiimageView e un sacco di pulsanti "Dettagli divulgazione" in cima a TE UIIMAGE per scopi di navigazione.

Quello che sto notando è che questi pulsanti s sono deviati dalla loro posizione del loro designer (Builder Interface) quando vengono in simulatore.

Sospetto che la barra di navigazione abbia qualcosa a che fare con questo, ma non si abbassano proporzionali all'altezza della barra di navigazione.

Non sono sicuro di come dire loro di aggrapparmi alla loro posizione.

L'uiimage non eccetto l'altezza dello schermo anche con la barra di Navigaion in alto.

Sono le loro linee guida / Gotchas bisogna sapere quando si utilizza la barra di navigazione in alto?

Sto usando xcode 4

Grazie

Modifica:

- (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;
}
.

Un'altra cosa è che se utilizzo il metodo "AddsubView", quindi la barra di navigazione viene troncata mentre se assegna il controller nav a window.rootviewcontroller, vedo l'intera barra del navigazione.

Modifica 2

Qui come il mio AppDelegate.h sembra

@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
.

Ecco il metodo DidFinishLaungeGegage.m's MethodFinish

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

MainWindow.xib contiene App Delegata e la finestra come oggetti. La finestra ha un UIView sotto di esso.

Il file XIB di StartScreenViewController ha l'UIIMAGEView e i pulsanti.

È stato utile?

Soluzione

Prendi dei colpi dello schermo e vedi quanto sono lontani. Se è il suo 20px, allora questo è un problema che tonnellate di persone hanno avuto (incluso me stesso). L'ho risolto ridefinendo la vista per avere la stessa dimensione che è in Ib. Per qualche ragione l'iPhone cerca di essere intelligente e aiutarti a ridimensionare le cose ea volte sbaglia.

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

Se ciò non funziona, prova questa ricerca: https://stackoverflow.com/search?q=% 5Biphone% 5D + 20px .


. Modifica:
. Ho perso un pezzo qui. Per aggirare questo ho dovuto aggiungere un UIView al file MainWindow.xib ....

1. Nel tuo AppDelegate.h, crea una proprietà per Iboulet Uiview * Mainview
2. Fai la cosa @property per questo e sintetizzalo nel file .m
3. Apri MainWindow.xib
4. Trascina un'upiew sulla finestra (non il viewcontroller) e renderlo in forma il full frame e 5. Fare clic con il tasto destro del mouse sull'oggetto AppDelegate nella finestra Documenti in IB e collega la proprietà MainView a UIView che hai appena aggiunto.
6. Ora in 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;
.

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