有没有一种方法可以改变UITabBar或UITabBarItem中文本的位置?

31

在此输入图片描述

这是我打算放在屏幕上的自定义选项卡栏。然而,我的合作伙伴想要文本稍微向上移动。我该怎么做呢?

6个回答

54
为什么不将视图控制器的标题属性设置为空,并将标题添加到自定义选项卡图片中呢?
更新:为了完整回答问题,根据评论和ios tabbar put text in the middle when no image [tab.tabBarItem setTitlePositionAdjustment:UIOffsetMake(0, -10)]

够好了。我找到了更好的方法:https://dev59.com/Vmcs5IYBdhLWcg3wym0h - user4234
最终选择了您的答案,因为它更全面 :) - user4234
为什么是 (0,-10)?我不明白...你能给我解释一下吗? - LKM
@LKM 0 表示没有水平偏移,-10 向上移动文本。 - Jeremy Wiebe
你也可以在Storyboard中完成它。 - Nike Kov

46

你可能希望在全局范围内应用此偏移量,所以我建议

Obj-C

[UITabBarItem appearance].titlePositionAdjustment = UIOffsetMake(0, -4);

快速(Swift):

UITabBarItem.appearance().titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -4)

Swift中的更正:UITabBarItem.appearance().titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -4) - 262Hz
3
如果你只想调整垂直位置(在Swift中),你也可以使用以下代码:UITabBarItem.appearance().titlePositionAdjustment.vertical = -4 - benrudhart

11

以下是使用Interface Builder的相同技巧:

在此输入图像描述


不错!还介绍了用户定义的运行时属性部分,谢谢! - craft

10
你可以直接从 Interface Builder 进行设置(在标题位置中设置自定义偏移量),方法如下: link


1
刚试了一下,它可以工作,但是当你进入横屏模式时,你的文本将不再居中于你的图像(因为在横屏模式下,图像和标签是水平而不是垂直定位的)。 - Starwave

7

iOS 13及更高版本:

if #available(iOS 13, *) {
        let appearance = UITabBarAppearance()
           appearance.stackedLayoutAppearance.selected.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -10)
           appearance.stackedLayoutAppearance.normal.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -10) 
     }

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接