返回

用 Objective-C 创建一个垂直 TarBarController

IOS

导语

在 iOS 应用开发中,TabBarController 是一种广泛使用的组件,用于在屏幕底部提供选项卡式导航。然而,对于 iPad 等设备,垂直排列选项卡可能比水平排列更合适。本文将探讨如何使用 Objective-C 创建一个垂直的 TabBarController,又称 VerticalTabBar。

Objective-C 中的 VerticalTabBar

创建垂直 TabBarController 的最简单方法是使用第三方库,例如 futuresimple/FSVerticalTabBarController。这是一个功能齐全的库,它提供了一个易于使用的 API 来创建和自定义垂直 TabBarController。

安装 FSVerticalTabBarController:

pod 'FSVerticalTabBarController'

使用 FSVerticalTabBarController:

// 创建一个垂直TabBarController
FSVerticalTabBarController *tabBarController = [[FSVerticalTabBarController alloc] init];

// 添加视图控制器
UIViewController *viewController1 = [[UIViewController alloc] init];
viewController1.view.backgroundColor = [UIColor redColor];
viewController1.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"选项卡 1" image:nil tag:0];

UIViewController *viewController2 = [[UIViewController alloc] init];
viewController2.view.backgroundColor = [UIColor blueColor];
viewController2.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"选项卡 2" image:nil tag:1];

[tabBarController setViewControllers:@[viewController1, viewController2]];

// 设置TabBarController为根视图控制器
self.window.rootViewController = tabBarController;

使用 ContainerViewController 创建自定义 VerticalTabBar

如果您更喜欢不依赖第三方库,也可以使用 ContainerViewController 来创建自己的自定义 VerticalTabBar。以下是步骤:

  1. 创建 ContainerViewController:
UIViewController *containerViewController = [[UIViewController alloc] init];
  1. 创建选项卡栏:

创建垂直排列选项卡栏的 UIStackView。

UIStackView *tabBar = [[UIStackView alloc] init];
tabBar.axis = UILayoutConstraintAxisVertical;
tabBar.distribution = UIStackViewDistributionEqualSpacing;
tabBar.alignment = UIStackViewAlignmentCenter;
  1. 创建选项卡按钮:

为每个选项卡创建自定义按钮。

UIButton *tabButton1 = [UIButton buttonWithType:UIButtonTypeCustom];
[tabButton1 setTitle:@"选项卡 1" forState:UIControlStateNormal];
[tabButton1 addTarget:self action:@selector(tabButton1Pressed) forControlEvents:UIControlEventTouchUpInside];

UIButton *tabButton2 = [UIButton buttonWithType:UIButtonTypeCustom];
[tabButton2 setTitle:@"选项卡 2" forState:UIControlStateNormal];
[tabButton2 addTarget:self action:@selector(tabButton2Pressed) forControlEvents:UIControlEventTouchUpInside];
  1. 将选项卡按钮添加到选项卡栏:
[tabBar addArrangedSubview:tabButton1];
[tabBar addArrangedSubview:tabButton2];
  1. 添加选项卡栏到 ContainerViewController:
[containerViewController.view addSubview:tabBar];
  1. 添加视图控制器到 ContainerViewController:

使用子视图控制器容器视图控制器。

UIView *containerView = [[UIView alloc] init];
[containerViewController.view addSubview:containerView];
  1. 切换视图控制器:

当用户点击选项卡按钮时,切换视图控制器。

- (void)tabButton1Pressed {
    UIViewController *viewController1 = [[UIViewController alloc] init];
    viewController1.view.backgroundColor = [UIColor redColor];
    [self addChildViewController:viewController1];
    [containerView addSubview:viewController1.view];
    [viewController1 didMoveToParentViewController:self];
}

- (void)tabButton2Pressed {
    UIViewController *viewController2 = [[UIViewController alloc] init];
    viewController2.view.backgroundColor = [UIColor blueColor];
    [self addChildViewController:viewController2];
    [containerView addSubview:viewController2.view];
    [viewController2 didMoveToParentViewController:self];
}

结论

本文讨论了两种在 Objective-C 中创建垂直 TabBarController 的方法。使用 FSVerticalTabBarController 是一个快速简单的解决方案,而使用 ContainerViewController 创建自定义 VerticalTabBar 则提供了更多的灵活性。根据您的具体要求选择合适的方法。无论您选择哪种方法,都能在 iPad 上创建出色而实用的垂直导航体验。