iOS 获取所有tabbaritem的位置

简介

为了给tabbarController的tabbar添加动画,首先要获取所有tabbaritem的位置,然而系统并没有给出获取item位置的方法,经过多次测试发现其实tabbar上的item有这样的规律。假设tabbar的宽度是屏幕的宽度Width,那么当item只有一个的时候,他的宽度是屏幕宽度的1/3(一般不会出现只有一个item的情况,目前没有那么傻的APP。。。)当item有两个的时候,每一个item的宽度是屏幕的1/6。第一个item的起始位置是1/6*Width,
为了给tabbarController的tabbar添加动画,首先要获取所有tabbaritem的位置,然而系统并没有给出获取item位置的方法,经过多次测试发现其实tabbar上的item有这样的规律。

假设tabbar的宽度是屏幕的宽度Width,那么当item只有一个的时候,他的宽度是屏幕宽度的1/3(一般不会出现只有一个item的情况,目前没有那么傻的APP。。。)

当item有两个的时候,每一个item的宽度是屏幕的1/6
第一个item的起始位置是1/6*Width,第二个item的起始位置是4/6*Width

当item有三个的时候,每一个item的宽度是屏幕的1/9
第一个item的起始位置是1/9*Width,第二个item的起始位置是4/9*Width,第三个item的起始位置是7/9*Width

当item有四个的时候,每一个item的宽度是屏幕的1/12
第一个item的起始位置是1/12*Width,第二个item的起始位置是4/12*Width,第三个item的起始位置是7/12*Width,第四个item的起始位置是10/12*Width

那么我们可以总结出这么一个规律,就是分子是1,4,7,10这样一个等差数列,而分母是3,6,9,12这样一个等比数列,那么计算每个item的位置就很简单了,像这样:(这是计算当前点选的item的起始位置)
(3.0CGFloat(self.tabbarController.selectedIndex+1)-2.0)ScreenWidth/CGFloat(self.tabbarController.tabBar.items.count*3)

你可能感兴趣的:(iOS 获取所有tabbaritem的位置)