如何为中心选项卡栏项目创建自定义操作?

大多数应用程序都有一个主要动作,即Twitter上的Tweet,Instagram上的Post,PayPal上的汇款,Swarm上的签到(Foursquare)。 您可能正在构建一个具有此类主要操作的应用程序,所以我想写一篇文章,介绍如何使用Swift为您的应用程序创建该中心操作。

主要动作是应始终可见且易于访问的内容。 因此,您可能希望将此操作放置在选项卡栏的中心或导航栏的顶部。 在这种情况下,我将向您展示最受欢迎的按钮,这是自定义标签栏上的中央操作按钮。

您可以将操作分配给中心按钮,例如弹出视图,摄像机视图控制器或基本上任何您想要的东西。

如果您想获得完整的代码,只需向下滚动至底部即可查看我的要旨。

这是逐步完成的方式。

您将需要一个自定义的标签栏控制器来操作标签按钮和操作。

 类CustomTabBarController:UITabBarController,UITabBarControllerDelegate { 

假设您在应用程序上有四个标签,并且希望使用动作视图控制器(即自定义相机视图)进行中央动作。 如果您想知道如何构建自定义视图控制器,这是我的文章。

  var homeViewController:HomeViewController! 
var secondViewController:SecondViewController!
var actionViewController:actionViewController!
var thirdViewController:ThirdViewController!
var fourViewController:FourthViewController!override func viewDidLoad(){
super.viewDidLoad()
homeViewController = HomeViewController()
secondViewController = SecondViewController()
actionViewController = ActionViewController()
thirdViewController = ThirdViewController()
fourViewController = FourthViewController()
}

让我们为标签栏设置一些图标,使其首先看起来不错。 始终还要设置selectedImage,因为您的用户希望知道他们所看到的选项卡(就像网站菜单一样)。

我们将在您的viewDidLoad中进行此操作。 另外,不要忘记设置您的代表(您将知道为什么在第6步中这样做了)。

 覆盖func viewDidLoad(){ 
super.viewDidLoad()
self.delegate =自我

在viewDidLoad函数内部,设置标签栏图标。 在执行此操作之前,请确保将这些图像作为资产包含在项目中。

  homeViewController.tabBarItem.image = UIImage(named:“ home”) 
homeViewController.tabBarItem.selectedImage =
UIImage(名称:“家庭选择”)secondViewController.tabBarItem.image = UIImage(名称:“第二”)
secondViewController.tabBarItem.selectedImage = UIImage(命名为“第二次选择”)actionViewController.tabBarItem.image = UIImage(命名为“ action”)
actionViewController.tabBarItem.selectedImage = UIImage(名称:“动作已选择”)thirdViewController.tabBarItem.image = UIImage(名称:“ third”)
thirdViewController.tabBarItem.selectedImage = UIImage(命名为“第三选择”)fourthViewController.tabBarItem.image = UIImage(命名为“第四”)
fourViewController.tabBarItem.selectedImage = UIImage(名称:“第四选择”)

您需要定义应在选项卡栏控制器中放置哪些视图控制器。

  viewControllers = [homeViewController,secondViewController,actionViewController,thirdViewController,fourthViewController] 

标签栏上带有中心操作按钮的大多数应用程序都没有标题,因为标题占用了很大的空间,而且看起来也不酷。 大多数情况下,您的图标足以说明该标签所代表的含义。

在定义viewControllers之后,立即删除标题并使图标居中。

 为tabBar.items中的tabBarItem!  { 
tabBarItem.title =“”
tabBarItem.imageInsets = UIEdgeInsetsMake(6,0,-6,0)
}

要为中心选项卡设置操作,您需要检测用户何时点击选项卡,并为其他内容定义该操作,而不是将视图控制器显示为其他选项卡。

您需要使用标签栏委托函数“ shouldSelect”来完成此操作。

  // MARK:UITabbar Delegatefunc tabBarController(_ tabBarController:UITabBarController,shouldSelect viewController:UIViewController)-> Bool {如果viewController.isKind(of:ActionViewController.self){ 
让vc = ActionViewController()
vc.modalPresentationStyle = .overFullScreen
self.present(vc,动画:true,完成:无)
返回假
}
返回true}

在这里,我们检查所选选项卡是否是我们定义为动作视图控制器的选项卡,如果是,则执行我们想要的操作。

在此示例中,我仍显示了动作视图控制器,但以全屏格式显示,用户可以感觉到该应用程序的全新部分已呈现。

您可以做各种事情,而且不必为标签栏控制器提供任何视图控制器集。 只要在“ shouldSelect”委托函数中返回false,就不会显示视图控制器。

这是完整的代码。