gpt4 book ai didi

iphone - 如何获得 UITabBarItem 的宽度?

转载 作者:IT王子 更新时间:2023-10-29 08:20:41 29 4
gpt4 key购买 nike

UITabBarItem 的宽度会有所不同,具体取决于数量。

如何确定标签栏项目的宽度?

如果可能的话,我正在寻找一个属性,而不是一个数学公式,因为在 iPad 上,标签栏两侧也存在填充问题。考虑这些屏幕截图。请注意 iPad 上选项卡栏项目两侧的填充(用红色框突出显示)。 iPhone 上不存在此填充。

iPad:

enter image description here

iPhone: enter image description here

最佳答案

编辑:在下面的评论中指出,此解决方案不适用于 iOS 5 的测试版,因此请准备修改它以满足您的需求。

我认为为了以正确的方式做到这一点,您必须能够到达每个标签栏项目的框架。幸运的是,这是可能的:

CGFloat tabBarTop = [[[self tabBarController] tabBar] frame].origin.y;
NSInteger index = [[self tabBarController] selectedIndex];
CGFloat tabMiddle = CGRectGetMidX([[[[[self tabBarController] tabBar] subviews] objectAtIndex:index] frame]);

上面的代码为您提供了选项卡栏顶部的 y 坐标和所选选项卡项中间的 x 坐标。从这里,您可以将指示器 View 添加到相对于此点的选项卡栏 Controller View 。

免责声明:这种方法的危险在于它通过访问其 View 层次结构和frame 来窥探UITabBar 类的内部结构私有(private) UITabBarButton 类实例的属性。 future 的 iOS 更新可能会(尽管不太可能)影响/破坏这种方法。但是,您没有访问任何私有(private) API,因此这不应导致您的应用被 App Store 拒绝。

我做了 a simple iPad project demonstrating how it works , 完成动画。

关于iphone - 如何获得 UITabBarItem 的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540027/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com