通常在UITabBar
的每个标签上都有一个小图片和一个标题,用于命名标签。图像位于标签顶部/居中,以容纳下方的标题。我的问题是:如果你想让tabBar只有一个图像,没有标题可以将图像向下移动,以便在标签中更好地居中?
我目前正在使用(见下文):
[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];
但更喜欢使用没有标题的较大图像,目前如果我使图像大于约70像素@ 2x它开始偏离UITabBar
的顶部,同时留下大量未使用的空间底部。
答案 0 :(得分:163)
尝试调整tabBarItem
的{{1}}(用于移动图标图像)并将控制器标题设置为nil(因此不会显示标题)。将这样的内容添加到视图控制器中的imageInsets
或-init
方法:
<强>目标C 强>
-viewDidLoad
<强>夫特强>
self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
self.title = nil;
self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
self.title = nil
是UITabBarItem
的子类,具有UIBarItem
属性。使用插图播放一点,直到它看起来很好(取决于您的tabbar图标图像)
答案 1 :(得分:135)
答案 2 :(得分:47)
创建UITabBarController
的子类,并在其viewDidLoad
:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.viewControllers enumerateObjectsUsingBlock:^(UIViewController *vc, NSUInteger idx, BOOL *stop) {
vc.tabBarItem.title = nil;
vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
}];
}
斯威夫特3:
for vc in self.viewControllers! {
vc.tabBarItem.title = nil
vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
答案 3 :(得分:9)
如果你正在使用Xamarin,这可行:
screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";
答案 4 :(得分:8)
这对我有用
Swift 4
let array = tabBarController?.customizableViewControllers
for controller in array! {
controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
答案 5 :(得分:2)
SWIFT 3.0
您可以根据设计设置图像设置,设置顶部,左侧,底部和右侧。
self.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
答案 6 :(得分:2)
对于iOS 11,除了设置ImageInsets之外,您还需要覆盖 TraitCollection 方法。 请在子类UITabBarController类中添加方法
public override UITraitCollection TraitCollection {
get {
return UITraitCollection.FromHorizontalSizeClass(horizontalSizeClass: UIUserInterfaceSizeClass.Compact);
}
}
答案 7 :(得分:0)
在 Swift 4.2 中,UIEdgeInsetsMake
被删除,相反,我们应该使用UIEdgeInsets
,
let array = tabBarController?.customizableViewControllers
for controller in array! {
controller.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0)
}
答案 8 :(得分:0)
这些对我不起作用,唯一可行的解决方案是在添加图像时设置 alignmentRectInsets 。这是我的样子:
let newsView = NewsViewController()
let newsIcon = UITabBarItem(title: nil, image: UIImage(systemName: "newspaper")?.withAlignmentRectInsets(UIEdgeInsets(top: 8.5, left: 0, bottom: -8.5, right: 0)), tag: 0)
newsView.tabBarItem = newsIcon
let viewControllers = [newsNavController]
self.viewControllers = viewControllers