Дизайн пользовательского интерфейса iPhone для навигационного контроллера - кнопки движутся вниз

StackOverflow https://stackoverflow.com/questions/6017610

Вопрос

Я создал приложение навигационного контроллера. Взгляд, который открывается под панелью NVIGATE, имеет UiimageView и куча кнопок «детализированных раскрытий» на вершине Te UiImage для навигаций.

Что я замечаю, состоит в том, что эти кнопки S отклонили от своего дизайнера (интерфейсного строителя), когда они придумывают в симуляторе.

Я подозреваю, что навигационная бата имеет что с этим делать, но они не двигаются пропорционально высоте навигационной панели.

Я не уверен, как сказать им, чтобы держать их на их позицию.

Uiimage не переполняет высоту экрана даже при навигационной панели сверху.

Есть ли какие-либо руководящие принципы / gotchas, которые нужно знать при использовании навигационного бара в верхней части?

Я использую XCode 4

Спасибо

Редактировать:

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

Другое дело, что, если я использую метод «AddSubView», то панель NAV усекается, пока я назначаю NAV Controller в Window.RootviewController, то я вижу весь навигационный бар.

Редактировать 2

Вот как мой appdelegate.h выглядит

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

Вот метод DidfiniShlaunchingWithingPithingpithingPitionswittions appdelegate.m

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 содержит делегат приложения и окно как объекты. В окне есть UIView под ним.

StartScreenViewController XIB файл имеет UiimageView и кнопки.

Это было полезно?

Решение

Снимите некоторые снимки экрана и посмотрите, как далеко они движутся вниз. Если его 20px, то это проблема, что тонны людей имели (включая себя). Я исправил его путем переопределения вида, чтобы быть таким же размером, что он находится в IB. По какой-то причине iPhone пытается быть умным и помочь вам изменить размер вещей, а иногда это неправильно.

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

Если это не работает, попробуйте этот поиск: https://stackoverflow.com/search?q=% 5BIPHONE% 5D + 20PX .


Редактировать:
Я пропустил кусок здесь. Чтобы обойти это, мне пришлось добавить UIView на файл MainWindow.xib ...

1. В вашем AppDelegate.h Создать недвижимость для iBoutlet UIView * MainView 2. Сделайте вещь @property для нее и синтезировать его в .m file
3. Откройте mainwindow.xib 4. Перетащите UIView на окно (не ViewController) и сделайте его в соответствии с полной рамкой 5. Щелкните правой кнопкой мыши объект AppDelegate в окне документов в IB и подключите свойство MainView к UIView, которое вы только что добавили. 6. Теперь в 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;
}
.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top