请查看我们博客上的这篇文章如何为移动应用程序创建动画标签栏。
LUNTabBarController是UITabBarController的子类,旨在为底部的标签页添加酷炫的浮动动画和缩放效果,使标签栏具有3D效果。使用LUNTabBarController,您可以实现类似以下示例将标签栏转换为视图控制器的外观效果。
LUNTabBarController要求使用ARC。为了在一个非ARC项目中使用LUNTabBarController,您需要在LUNTabBarController.m和LUNTabBarAnimationController.m文件中添加-fobjc-arc编译器标志。
要在您的应用程序中使用LUNTabBarController,只需将LUNTabBarController文件夹拖动到项目中即可。
或者您可以使用CocoaPods
pod 'LUNTabBarController', '~> 1.0'
为了使用此项目,只需将应用程序标签栏控制器的类更改为LUNTabBarController,然后在界面编辑器中设置以下属性:
@property (nonatomic) IBInspectable NSInteger floatingTabIndex;
指定哪个标签应使用动画转换。
@property (nonatomic) IBInspectable CGFloat floatingContentHeight;
指定浮动标签的内容高度。此值决定了浮动标签内容沿y轴的初始平移。您可能希望此值大于或等于非透明内容的高度,否则您将在屏幕上看到一个内容立即出现。
@property (nonatomic) IBInspectable CGFloat transitionDuration;
指定动画转换的持续时间(以秒为单位)。
@property (nonatomic) IBInspectable CGFloat transitionScaleMultiplier;
指定要应用于背景视图的缩放倍数。
@property (nonatomic) IBInspectable CGFloat transitionAlphaMultiplier;
指定要应用于背景视图的不透明度倍数。
如果您使用的转换缩放倍数小于1.0,您将看到围绕缩放视图的背景。要更改此背景颜色,只需将标签栏视图的颜色设置为所需颜色即可。您可以使用运行时属性或编程方式完成此操作。
如果内容高度不是常数(例如,取决于屏幕高度),则应根据您的逻辑以编程方式设置floatingContentHeight属性。这样做最容易的方法是继承LUNTabBarController并覆盖此属性的 getter。或者您可以从类外部设置属性。
在设计您浮动标签的界面时,您需要知道以下内容
你的视图控制器将全屏显示,正如标签栏控制器所期望的,因此你需要将内容放置在底部。
底部布局指南将包括标签栏的高度,即使标签栏不可见,所以你可能想为superview指定底部空间,而不是为底部布局指南。
你希望视图控制器的视图边框在标签栏下方延伸,否则在标签栏通常出现的位置将没有你的内容。要实现这一点,请确保你在视图控制器中启用了“在底部栏下延伸边框”。
要程序化关闭浮动标签,你应该调用以下方法
- (void)hideFloatingTab;
你可以通过在浮动标签的视图控制器中实现LUNTabBarFloatingControllerAnimatedTransitioning协议来获取关于动画转换的信息并提供额外动画。此协议包括以下方法
- (void)floatingViewControllerStartedAnimatedTransition:(BOOL)isPresenting;
通知动画转换开始。
- (void (^)(void))keyframeAnimationForFloatingViewControllerAnimatedTransition:(BOOL)isPresenting;
此方法用于在转换期间提供额外的自定义动画。
- (void)floatingViewControllerFinishedAnimatedTransition:(BOOL)isPresenting wasCompleted:(BOOL)wasCompleted;
通知动画转换结束。
根据MIT许可证使用。