Выпуск панели вкладок iPhone X и панели навигации - PullRequest
0 голосов
/ 12 июня 2018

У меня есть полное приложение, которое программно собирается с самого начала.Проект был запущен на старом XCode, может быть XCode 6. В настоящее время я работаю на XCode 6. Мой проект имеет файлы Objective-C и Swift, взаимодействующие друг с другом.У меня проблема в том, что она построена программно, я не могу просто зайти в раскадровку и настроить расположение безопасных областей.

Моя панель вкладок Изображения на Xcode 9.2 сходят с ума, а также навигационная панель.Я хочу исправить изображения, а также высоту панели вкладок.

enter image description here

Вот код в AppDelegate для добавления tabbarcontroller.

- (void)setupView {

    UIViewController *firstViewController = [[UIViewController alloc]init];
    firstViewController.view.backgroundColor = UIColor.redColor;
    firstViewController.title = @"First View";
    firstViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemSearch tag:0];
    UINavigationController *firstNavController = [[UINavigationController alloc] initWithRootViewController:firstViewController];

    UIViewController *secondViewController = [[UIViewController alloc]init];
    secondViewController.view.backgroundColor = UIColor.blueColor;
    secondViewController.title = @"Second View";
    secondViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1];
    UINavigationController *secondNavController = [[UINavigationController alloc] initWithRootViewController:secondViewController];

    UIViewController *thirdViewController = [[UIViewController alloc]init];
    thirdViewController.view.backgroundColor = UIColor.purpleColor;
    thirdViewController.title = @"Third View";
    thirdViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemRecents tag:2];
    UINavigationController *thirdNavController = [[UINavigationController alloc]initWithRootViewController:thirdViewController];

    UIViewController *fourthViewController = [[UIViewController alloc]init];
    fourthViewController.view.backgroundColor = UIColor.greenColor;
    fourthViewController.title = @"Fourth View";
    fourthViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemHistory tag:2];
    UINavigationController *fourthNavController = [[UINavigationController alloc]initWithRootViewController:fourthViewController];

    tabBarController = [[UITabBarController alloc] initWithNibName:nil bundle:nil];
    [tabBarController.tabBar invalidateIntrinsicContentSize];
    tabBarController.viewControllers = [[NSArray alloc] initWithObjects:firstNavController, secondNavController, thirdNavController, fourthNavController, nil];
    tabBarController.delegate = self;
    [tabBarController.view setNeedsLayout];

    self.window.rootViewController = tabBarController;
    [self.window makeKeyAndVisible];
}

Я добавил экран iPhone X Splash, который заставил приложение работать, я достаточно исследовал, но не смог найти решение.

1 Ответ

0 голосов
/ 22 июня 2018

Вы явно пропустили эту строку [[tabBarController view] setAutoresizingMask:UIViewAutoresizingFlexibleHeight];

tabBarController = [[UITabBarController alloc] initWithNibName:nil bundle:nil];
[tabBarController.tabBar invalidateIntrinsicContentSize];
tabBarController.viewControllers = [[NSArray alloc] initWithObjects:firstNavController, secondNavController, thirdNavController, fourthNavController, nil];

/* Enter this line */
[[tabBarController view] setAutoresizingMask:UIViewAutoresizingFlexibleHeight];

tabBarController.delegate = self;
[tabBarController.view setNeedsLayout];

Я попытался с вашим кодом и получил результат:

Вот скриншот:

enter image description here

...