只有图像为UITabBarItem

21 iphone objective-c uitabbar

我只想有一个图标作为UITabBarItem,而不是下面的文字,我想知道这是否可能,如果是的话,怎么样?TIA

Gav*_*vin 25

如果您使用故事板,也许您可​​以使用Image Inset条形码的尺寸检查器并同时将标题设置为空:

在此输入图像描述


Arm*_*ide 24

删除标题

检查员的简单方法

  • 选择TabbarItem
  • 标题位置更改为自定义偏移
  • 垂直设置为100
  • 完成

在此输入图像描述

修复图片

调整图像

  • 选择TabbarItem
  • 定义你的顶部底部

在此输入图像描述


Thi*_*res 17

如果您只是设置图像并将nil传递给title,则图像将显示在UITabBar项目的顶层.你还必须设置位置.

int offset = 7;
UIEdgeInsets imageInset = UIEdgeInsetsMake(offset, 0, -offset, 0);
Run Code Online (Sandbox Code Playgroud)

为TabBarItem设置图标图像后,设置属性值以更改图像位置,执行以下操作:

uiViewController.tabBarItem.imageInsets = imageInset;
Run Code Online (Sandbox Code Playgroud)


Bar*_*ley 13

将项目标题设置为nil通常是不够的,因为如果设置视图控制器的标题,它也将设置标签栏项目的标题.

相反,这样做:

tabbarItem.titlePositionAdjustment = UIOffsetMake(0.f, 50.f);
Run Code Online (Sandbox Code Playgroud)


alg*_*gal 6

您可以使用此Swift扩展来定义一个新方法tabBarItemShowingOnlyImage(),该方法将返回任何已UITabBarItem修改的方法以仅显示图像:

// helper for creating an image-only UITabBarItem
extension UITabBarItem {
    func tabBarItemShowingOnlyImage() -> UITabBarItem {
        // offset to center
        self.imageInsets = UIEdgeInsets(top:6,left:0,bottom:-6,right:0)
        // displace to hide
        self.setTitlePositionAdjustment(UIOffset(horizontal:0,vertical:30000))
        return self
    }
}
Run Code Online (Sandbox Code Playgroud)

此扩展程序基于其他评论中提供的建议.

它通过替换它来隐藏标题,而不是将其设置为nil,因为有时其他对象(如视图控制器本身)会在标签栏项初始化后将标题设置为某个值.它使图像居中,imageInsets使其偏移6pt,这是我在运行iOS8.3的iPhone 6上观察到的值.

我想其他设备和布局配置可能需要不同的偏移校正,因此一般的解决方案可能必须更复杂.


小智 1

相关文档(突出显示我的):

\n\n

initWithTitle:image:tag: \n使用指定属性创建并返回一个新项目。

\n\n
- (id)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag\n
Run Code Online (Sandbox Code Playgroud)\n\n

参数

\n\n

title:项目\xe2\x80\x99的标题。如果为零,则不显示标题。

\n\n

image:item\xe2\x80\x99s 图像。如果为 nil,则不显示图像。\n选项卡栏上显示的图像源自该图像。如果该图像太大而无法放在选项卡栏上,则会对其进行裁剪以适合。标签栏图像的大小通常为 30 x 30 点。源图像中的 Alpha 值用于创建未选定和选定的图像\xe2\x80\x94 不透明值将被忽略。

\n\n

tag:receiver\xe2\x80\x99s 标签,一个整数,可用于标识应用程序中的条形项目对象。

\n\n

返回值:具有指定属性的新初始化项。

\n