问题描述
通常在UITabBar
的每个选项卡上,您都有一个小图像和一个标题命名该选项卡。该图像定位/居中于标签的顶部,以适应下方的标题。我的问题是:如果你想有一个只有一个图像的tabBar,没有标题有一种方法可以将图像向下移动,以便它在标签中更好?
我正在使用(见下文):
[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];
但是更喜欢使用没有标题的较大图像,此刻如果我使图像大于约70pixels @ 2x,它将从UITabBar
的顶部开始,同时在底部留下大量未使用的空间。
最佳解决方案
尝试调整tabBarItem
的imageInsets
(用于移动图标图像)并将控制器标题设置为nil(因此不显示标题)。将这样的东西放到-init
或-viewDidLoad
方法的视图控制器中:
self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
self.title = nil;
UITabBarItem
是具有UIEdgeInsets imageInsets
性质的UIBarItem
的亚类。用插图玩一点,直到看起来不错(取决于你的标签图标图像)
*演示于Xcode版本7.3.1(7D1014)
第三种解决方案
制作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);
}];
}
Swift 3:
for vc in self.viewControllers! {
vc.tabBarItem.title = nil
vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
第四种方案
如果您使用Xamarin,则可以使用:
screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";