21 iphone objective-c uitabbar
我只想有一个图标作为UITabBarItem,而不是下面的文字,我想知道这是否可能,如果是的话,怎么样?TIA
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)
您可以使用此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\ninitWithTitle:image:tag: \n使用指定属性创建并返回一个新项目。
\n\n- (id)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag\nRun Code Online (Sandbox Code Playgroud)\n\n参数
\n\ntitle:项目\xe2\x80\x99的标题。如果为零,则不显示标题。
\n\nimage:item\xe2\x80\x99s 图像。如果为 nil,则不显示图像。\n选项卡栏上显示的图像源自该图像。如果该图像太大而无法放在选项卡栏上,则会对其进行裁剪以适合。标签栏图像的大小通常为 30 x 30 点。源图像中的 Alpha 值用于创建未选定和选定的图像\xe2\x80\x94 不透明值将被忽略。
\n\ntag:receiver\xe2\x80\x99s 标签,一个整数,可用于标识应用程序中的条形项目对象。
\n\n返回值:具有指定属性的新初始化项。
\n| 归档时间: |
|
| 查看次数: |
12052 次 |
| 最近记录: |