Swift自定义TabBarController实现动画效果

0 下载量 138 浏览量 更新于2024-09-01 收藏 101KB PDF 举报
"这篇文章主要讲解如何在Swift中自定义iOS的TabBarController并为它添加动画效果,特别是关于自定义TabBar以及实现动画的部分。对于那些希望个性化TabBarController外观和交互的开发者来说,这是一个非常实用的指南。" 在iOS开发中,TabBarController是苹果提供的一个标准组件,用于展示多个ViewController并允许用户通过底部的TabBar进行切换。然而,系统默认的TabBarController可能无法满足所有设计需求,例如,我们可能想要使用彩色图标而不是系统默认的轮廓效果。在这种情况下,我们需要自定义TabBarController。 自定义TabBarController的第一步是创建一个新的类`CustomTabBarController`,让它继承自`UITabBarController`。接着,在Storyboard中将你的TabBarController实例的Class改为`CustomTabBarController`。为了改变TabBar的外观,我们可以在`viewDidLoad()`方法里设置背景图片或者颜色。例如,可以使用以下代码将背景设为黑色: ```swift self.tabBar.backgroundImage = UIImage(named: "TabBarBG") // 或者 self.tabBar.barTintColor = UIColor.blackColor() ``` 接下来,我们要处理每个子ViewController中的TabBarItem。我们可以通过遍历`viewControllers`数组来修改它们的外观。对于每个TabBarItem,我们需要设置未选中和选中状态的图片,并确保图片渲染模式为`.AlwaysOriginal`,以保持原始颜色。同时,可以设置`imageInsets`来使图标居中。以下是一个示例: ```swift for (index, viewController) in self.viewControllers!.enumerated() { let image = UIImage(named: "TabBar\(index)")?.withRenderingMode(.alwaysOriginal) let selectedImage = UIImage(named: "TabBar\(index)Sel")?.withRenderingMode(.alwaysOriginal) let tabBarItem = UITabBarItem(title: nil, image: image, selectedImage: selectedImage) tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0) // 根据需要调整insets viewController.tabBarItem = tabBarItem } ``` 完成TabBar的基本定制后,我们可以开始添加动画效果。动画可以是多种多样的,例如,当用户点击TabBar时,我们可以让选中的图标放大或者淡入淡出。一种实现方式是在`UITabBarControllerDelegate`的`tabBarController(_:didSelect:)`方法中添加相应的动画代码。例如,使用UIView的动画块: ```swift func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { UIView.animate(withDuration: 0.3) { // 在这里编写动画代码,比如改变选中TabBarItem的大小、透明度等 } } ``` 自定义TabBarController结合动画可以为用户提供更加个性化的交互体验。通过自定义背景、图标和添加动画,我们可以使TabBarController更符合应用的设计风格,提高用户的使用体验。不过,需要注意的是,过度的动画可能会分散用户的注意力,因此在设计时要确保动画既美观又不影响整体的使用流程。
2019-07-19 上传
ESTabBarController 是一个高度自定义的 TabBarController 组件,继承自 UITabBarController,可轻松自定义 UI 样式,添加动画等。功能1、支持默认样式如果直接使用ESTabBarController进行初始化,你会得到与UITabBarController完全相同的仿系统样式UITabBarController样式:ESTabBarController仿系统样式:2、支持带有"More"的默认样式使用ESTabBarController进行初始化,若item大于最大显示数量则显示"More",样式与UITabBarController一致带有"More"的UITabBarController样式:带有"More"的ESTabBarController样式:3、支持UITabBarItem和ESTabBarItem混合可以任意设置tabbar的items,支持即包含UITabBarItem,同时也包含ESTabBarItemESTabBar和UITabBar混合样式:带有'More'的ESTabBar和UITabBar混合样式:4、支持UIKit属性支持UITabBarController、UITabBar和UITabBarItem的大部分api属性,使原有代码无需任何修改即可无缝迁移到ESTabBarController支持UITabBarController的selectedIndex属性的实现:5、支持与UINavigationController任意嵌套通常在使用UITabBarController过程中,会存在两种比较常见的层级处理方式:第一种:├── UITabBarController└──── UINavigationController└────── UIViewController└──────── SubviewControllers第二种:├── UINavigationController└──── UITabBarController└────── UIViewController└──────── SubviewControllers第一种情况在push子视图的时候需要设置 hidesBottomBarWhenPushed = true , 第二种则不需要在ESTabBarController中,通过添加Container视图到UITabBar的方式来兼容这两种层级处理方式。6、支持自定义使用ESTabBarController可以实现:自定义选中颜色和样式添加选中时的动画效果自定义Item的背景颜色添加高亮时的动画效果添加一些动画暗示用户点击等等...... 7、支持自定义按钮大小,支持自定义点击事件ESTabBarController支持自定义按钮的大小,你可以轻松定制不规则大小的tab按钮。当按钮frame大于TabBar时,通过HitTest方法使其超出TabBar区域点击仍然有效。 另外,ESTabBarController能够自定义点击事件,并通过一个block回调给上层处理。中间带有较大按钮样式:带有特殊提醒框样式:自定义按钮点击事件:8、支持默认通知样式如果直接使用ESTabBarController进行初始化,你会得到与UITabBarController完全相同的仿系统通知样式UITabBarController样式:ESTabBarController仿系统样式:9、支持自定义通知样式使用ESTabBarController可以实现:自定义提醒动画自定义提醒样式等等...... 10、支持Lottie通过自定义ContentView,能够添加Lottie的LAAnimationView到Item支持环境Xcode 8 or lateriOS 8.0 or laterARCSwift 3 or later