web-dev-qa-db-ja.com

UITabBarItem画像を下に移動しますか?

通常、UITabBarの各タブには、小さな画像とタブに名前を付けるタイトルがあります。画像はタブの上部に配置/中央に配置され、下のタイトルに対応します。私の質問は、画像だけでタブバーを持ちたい場合で、タイトルを持たないタブバー内の画像を下に移動する方法はありますか?

私は現在使用しています(以下を参照):

[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];

しかし、タイトルのない大きな画像を使用することを好むでしょう。現時点では、画像を約70pixels @ 2xより大きくすると、UITabBarの上部から縁取りが始まり、下部に多くの未使用のスペースが残ります。

92
fuzzygoat

tabBarItemimageInsetsを調整して(アイコン画像を移動するため)、コントローラーのタイトルをnilに設定してください(タイトルは表示されません)。このようなものを-init または -viewDidLoad View Controllerのメソッド:

Objective-C

self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
self.title = nil;

スイフト

self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
self.title = nil

UITabBarItemは、UIBarItemのサブクラスであり、UIEdgeInsets imageInsetsプロパティ。見栄えがよくなるまでインセットを少し再生します(タブバーアイコンの画像によって異なります)

166
Lukas Kukacka

ストーリーボードでもできます。タブバーアイテムを選択し、サイズインスペクターに移動して適切なインセットを割り当てます。

enter image description here

* Xcode、バージョン7.3.1(7D1014)で実証済み

135

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);
    }];
}

スウィフト3:

for vc in self.viewControllers! {
    vc.tabBarItem.title = nil
    vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
48
Brian

これは私のために働いた

Swift 4

let array = tabBarController?.customizableViewControllers
for controller in array! {
    controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
9
Alfi

Xamarinを使用している場合、これは機能します。

screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";
9
Jelle

IOS 11の場合、ImageInsetsの設定とは別にTraitCollectionメソッドをオーバーライドする必要があります。サブクラス化されたUITabBarControllerクラスにメソッドを追加してください

public override UITraitCollection TraitCollection {
 get {
  return UITraitCollection.FromHorizontalSizeClass(horizontalSizeClass: UIUserInterfaceSizeClass.Compact);
 }
}
2
Prashant

Swift 3.

画像のインセットを設定し、デザインに応じて上下左右を設定できます。

self.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
2
krish

Swift 4.2では、UIEdgeInsetsMakeが廃止され、代わりにUIEdgeInsetsを使用する必要があります。

let array = tabBarController?.customizableViewControllers
    for controller in array! {
        controller.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0)
    }
0
Bappaditya