美文网首页
iOS 获取tabbar每个tabbarItem的frame

iOS 获取tabbar每个tabbarItem的frame

作者: 余鹤龄 | 来源:发表于2020-10-26 11:11 被阅读0次

    为了给tabbarController的tabbar添加动画,首先要获取所有tabbaritem的位置,然而系统并没有给出获取item位置的方法,经过多次测试发现其实tabbar上的item有这样的规律。

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

    当item有两个的时候,每一个item的宽度是屏幕的1/6。

    第一个item的起始位置是1/6Width,第二个item的起始位置是4/6Width

    当item有三个的时候,每一个item的宽度是屏幕的1/9。

    第一个item的起始位置是1/9Width,第二个item的起始位置是4/9Width,第三个item的起始位置是7/9*Width

    当item有四个的时候,每一个item的宽度是屏幕的1/12。

    第一个item的起始位置是1/12Width,第二个item的起始位置是4/12Width,第三个item的起始位置是7/12Width,第四个item的起始位置是10/12Width

    当item有五个的时候,每一个item的宽度是屏幕的1/15。

    第一个item的起始位置是1/15Width,第二个item的起始位置是4/15Width,第三个item的起始位置是7/15Width,第四个item的起始位置是13/15Width

    当item有六个的时候,每一个item的宽度还是屏幕的1/15。

    item最多显示五个,多的就跑到另一个页面去了。可以自己试验一下。

    那么我们可以总结出这么一个规律,就是分子是1,4,7,10,13这样一个等差数列,而分母是3,6,9,12,15这样一个等比数列,那么计算每个item的位置就很简单了,像这样:(这是计算当前点选的item的起始位置)

    (3.0*CGFloat(self.tabbarController.selectedIndex+1)-2.0)*ScreenWidth/CGFloat(self.tabbarController.tabBar.items.count*3)

    链接:https://www.jianshu.com/p/ac0cecc27b54

    来源:简书

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:iOS 获取tabbar每个tabbarItem的frame

          本文链接:https://www.haomeiwen.com/subject/tzkamktx.html