繁体   English   中英

相对于选项卡指示器的位置视图

[英]position view relative to tab indicator

我得到了一个使用UITabBarController的UI,并且在其中一个选项卡式ViewControllers ,需要相对于选项卡指示器放置一个View (箭头作为UIImageView )(箭头需要指向该指示器居中沿x轴)。 我使用基本数学算法基于已知变量模拟了位置,并且它在横向和纵向方向上都适用于iPhone / Pod,但在iPad上却无法正常工作(在两种方向上都不太正确-在横向方向上似乎更糟,但这可能只是我的看法)。

这是我使用的:

int visibleWidth = self.view.frame.size.width;
int tabBarSize = self.tabBarController.tabBar.frame.size.width;
int tabSize = tabBarSize / [self.tabBarController.viewControllers count];
int tabPosition = 2; // hint should point at the 3rd tab
int arrowIconWidth = hintIcon.image.size.width;
int arrowIconHeight = hintIcon.image.size.height;

int tabEmulationPosition = visibleWidth / 2 - tabBarSize / 2;
int tabOffsetPosition = tabEmulationPosition + ( tabSize * tabPosition );
int iconPosition = tabOffsetPosition + ( tabSize / 2 - arrowIconWidth / 2 );

有没有比“伪造”数学更好的方法(也许是getBoundingClientRect类型的方法?)还是数学方法是最好的选择,假设我所拥有的东西存在可纠正的缺陷?

TYIA

除了一个警告之外,您的数学似乎还不错:核心图形的距离都是CGFloat类型,而不是int类型。 请记住,整数除法在C语言中的工作原理与您期望的不同:

int x = 5 / 2; // x == 2

因此,将int替换为CGFloat然后除以2.0而不是2。

同样,在iPad中,选项卡按钮不一定在整个条形上均匀分布,而是在左右两侧具有一定的填充。 您将不得不费力寻找合适的常数,或者通过实验找到一种可靠的方法来根据视图控制器的数量进行计算。

假设选项卡栏按钮的宽度是固定的,则可以计算要添加到图像x的偏移量:

CGFloat tabSize = 
   FIXED_TAB_BUTTON_WIDTH * self.tabBarController.viewControllers.count;
CGFloat offset = (tabBarSize - tabSize) / 2.0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM