下のテキストではなく、アイコンを UITabBarItem としてのみ使用したいのですが、これが可能かどうか疑問に思っていました。ティア
9 に答える
ストーリー ボードを使用する場合はImage Inset
、バー アイテムのサイズ インスペクターを使用して、同時にタイトルを空に設定できます。
画像を設定してタイトルに nil を渡すと、画像は UITabBar アイテムの最上位に表示されます。位置も設定する必要があります。
int offset = 7;
UIEdgeInsets imageInset = UIEdgeInsetsMake(offset, 0, -offset, 0);
TabBarItem のアイコン イメージを設定した後、プロパティ値を設定してイメージの位置を変更します。次のようにします。
uiViewController.tabBarItem.imageInsets = imageInset;
この 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
}
}
この拡張機能は、他のコメントで提供されたアドバイスに基づいています。
タイトルを に設定するのではなく、置き換えて非表示にします。これはnil
、ビュー コントローラー自体などの他のオブジェクトが、タブ バー項目が初期化された後にタイトルを何らかの値に設定する場合があるためです。を使用して画像を中央imageInsets
に配置し、6pt オフセットします。これは、iOS8.3 を実行している iPhone 6 で目で見て得た値です。
他のデバイスやレイアウト構成では別のオフセット補正が必要になる可能性があるため、一般的なソリューションはおそらくより複雑になると思います。
関連するドキュメント(私のハイライト):
initWithTitle:image:tag: 指定されたプロパティを使用して新しいアイテムを作成して返します。
- (id)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag
パラメーター
title: アイテムのタイトル。nil の場合、タイトルは表示されません。
image: アイテムの画像。nil の場合、画像は表示されません。タブ バーに表示される画像は、この画像から派生したものです。この画像が大きすぎてタブ バーに収まらない場合は、収まるように切り取られます。通常、タブ バー イメージのサイズは 30 x 30 ポイントです。ソース イメージのアルファ値を使用して、選択されていないイメージと選択されたイメージが作成されます。不透明な値は無視されます。
tag: レシーバーのタグ。アプリケーションでバー アイテム オブジェクトを識別するために使用できる整数です。
戻り値: 指定されたプロパティを持つ新しく初期化されたアイテム。
このような
UITabBarItem * personalBarItem = [[UITabBarItem alloc] init];
[personalBarItem setFinishedSelectedImage:[UIImage imageNamed:@"personal_click"] withFinishedUnselectedImage:[UIImage imageNamed:@"personal"]];
以下のコードで試してください:
UIViewController *viewController1=[[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
UIViewController *viewController2=[[SecondViewCtr alloc]initWithNibName:@"SecondViewCtr" bundle:nil];
UIViewController *viewController3=[[ThirdViewCtr alloc]initWithNibName:@"ThirdViewCtr" bundle:nil];
UIViewController *viewController4=[[FourthVIewCtr alloc]initWithNibName:@"FourthVIewCtr" bundle:nil];
UIViewController *viewController5=[[FIfthViewCtr alloc]initWithNibName:@"FIfthViewCtr" bundle:nil];
UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:viewController1];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:viewController2];
UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:viewController3];
UINavigationController *nav4 = [[UINavigationController alloc] initWithRootViewController:viewController4];
UINavigationController *nav5 = [[UINavigationController alloc] initWithRootViewController:viewController5];
peekArray = [[NSMutableArray alloc] init];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2,nav3,nav4,nav5, nil];
UITabBar *tabBar = _tabBarController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3];
UITabBarItem *tabBarItem5 = [tabBar.items objectAtIndex:4];
[tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"home123.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"home_112.png"]];
[tabBarItem2 setFinishedSelectedImage:[UIImage imageNamed:@"gift123.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"gift_112.png"]];
[tabBarItem3 setFinishedSelectedImage:[UIImage imageNamed:@"cam12.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"cam_112.png"]];
[tabBarItem4 setFinishedSelectedImage:[UIImage imageNamed:@"message12.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"message_112.png"]];
[tabBarItem5 setFinishedSelectedImage:[UIImage imageNamed:@"people12.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"people_112.png"]];
[self.tabBarController setSelectedIndex:0];
self.window.rootViewController = self.tabBarController;