Дизайн пользовательского интерфейса iPhone для контроллера навигации - кнопки перемещаются вниз - PullRequest
0 голосов
/ 16 мая 2011

Я создал приложение на основе контроллера навигации.Представление, которое открывается под панелью навигации, имеет UIImageView и несколько кнопок «подробного раскрытия» в верхней части изображения для навигационных целей.

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

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

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

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

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

Я использую 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;
}

Другое дело, что если я использую метод addubview, то панель навигации усекается, а если я назначаю контроллер навигации для window.rootviewcontrollтогда я вижу всю навигационную панель.

Edit 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

Вот AppDelegate.m's didFinishLaunchingWithOptions метод

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 под ним.

XIB-файл StartScreenViewcontroller содержит UIImageview и кнопки.

1 Ответ

1 голос
/ 16 мая 2011

Сделайте несколько снимков экрана и посмотрите, как далеко они перемещаются вниз.Если его 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 * mainView2. Сделайте для него @property и синтезируйте его в файле .m3. Откройте MainWindow.xib4. Перетащите 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...