移动UITabBarItem图像?

fuz*_*oat 94 iphone cocoa-touch objective-c uitabbaritem uitabbar

通常在a的每个选项卡上UITabBar都有一个小图像和一个命名选项卡的标题.图像位于标签顶部/居中,以容纳下方的标题.我的问题是:如果你想让tabBar只有一个图像而没有标题,那么有一种方法可以将图像向下移动,使其在标签内更好地居中吗?

我目前正在使用(见下文):

[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];
Run Code Online (Sandbox Code Playgroud)

但是我更喜欢使用没有标题的较大图像,此时如果我使图像大于约70像素@ 2x它开始从顶部开始边缘,UITabBar同时在底部留下大量未使用的空间.

Luk*_*cka 173

尝试调整tabBarItemimageInsets(用于移动图标图像)和设定控制器标题为nil(因此没有显示标题).在视图控制器中放置这样的东西-init-viewDidLoad方法:

Objective-C的

self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
self.title = nil;
Run Code Online (Sandbox Code Playgroud)

迅速

self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
self.title = nil
Run Code Online (Sandbox Code Playgroud)

UITabBarItem是一个UIBarItem具有UIEdgeInsets imageInsets属性的子类.使用插图播放一点,直到它看起来很好(取决于您的tabbar图标图像)

  • 如果你需要像素完美,实际的插入值是5.5f. (6认同)
  • @Lukas:但这缩小了图像. (3认同)

Nei*_*rov 141

你也可以通过故事板来做到这一点.选择tabbaritem,转到大小检查器并分配相应的insets.

在此输入图像描述

*在Xcode上展示,版本7.3.1(7D1014)


Bri*_*ian 48

创建一个子类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);
    }];
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

for vc in self.viewControllers! {
    vc.tabBarItem.title = nil
    vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
Run Code Online (Sandbox Code Playgroud)


Jel*_*lle 9

如果你正在使用Xamarin,这有效:

screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";
Run Code Online (Sandbox Code Playgroud)


Alf*_*lfi 9

这对我有用

斯威夫特4

let array = tabBarController?.customizableViewControllers
for controller in array! {
    controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
Run Code Online (Sandbox Code Playgroud)