107

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

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

[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];

しかし、タイトルのない大きな画像を使用することをお勧めします。現時点では、画像を約 70 ピクセル @ 2x よりも大きくすると、上部から縁取りが始まりUITabBar、下部に未使用のスペースがたくさん残ります。

4

10 に答える 10

190

を調整して (アイコン イメージを移動するため)、コントローラーのタイトルを nil に設定してみてくださいtabBarItem(imageInsetsつまり、タイトルは表示されません)。次のようなもの-init-viewDidLoadView 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見栄えがよくなるまで、インセットを少しいじってください (タブバーのアイコン イメージによって異なります)。

于 2013-05-15T15:15:11.093 に答える
154

ストーリーボードを介して行うこともできます。tabbaritem を選択し、サイズ インスペクタに移動して、適切なインセットを割り当てます。

ここに画像の説明を入力

*Xcode、バージョン 7.3.1 (7D1014) でデモ

于 2016-03-20T07:44:08.107 に答える
0

2021 年、Objective-C

私はすべてのアプローチを試みますが、誰も働いていません。最終的に、それは SF シンボルをタブバアイテム イメージとして使用していることが原因であることがわかりました。カスタムイメージに置き換えると、うまくいきました。

    NSArray *tabItems = [self.tabBar items];
    // set tabItem icon, remove blue image with render mode set.
    UIImage *image1 = [[UIImage imageNamed:@"myIcon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
    // set title offset
    [tabItems[0] setTitlePositionAdjustment:UIOffsetMake(0, 20)];
    [tabItems[1] setTitlePositionAdjustment:UIOffsetMake(-20, 20)];
    [tabItems[2] setTitlePositionAdjustment:UIOffsetMake(20, 20)];
    [tabItems[3] setTitlePositionAdjustment:UIOffsetMake(0, 20)];

    // set image offset
    [tabItems[0] setImageInsets:UIEdgeInsetsMake(0, 0, -30, 0)];
    ...

uitabbaritem の画像解像度は、@2x の場合は 50x50px、@3x の場合は 75x75px です。

于 2021-09-03T17:54:44.533 に答える