6

次のように、各項目の画像を設定して、シンプルなカスタム タブバーを作成しました。

UITabBar *tabBar = self.tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"activity_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"activity.png"]];
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"agenda_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"agenda.png"]];
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"settings_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"settings.png"]];

これはうまく機能しますが、タブバーの下に黒い空白があることに気付きました

ここに画像の説明を入力

私の画像の高さは 44px ですが、どうにかしてタブバーの高さを変更する必要があると思います。

4

3 に答える 3

2

tabBar 自体は 49px で、画像の背後に黒色でレンダリングされます (おそらく[UITabBar layoutSubviews])。次に、画像が上にレンダリングされます。オフセットの理由は、提供する画像が大きすぎるためです。UITabBar は、UITabBarItem 全体の画像ではなく、30x30px のアイコンを想定しています。

以下のことを試してみてください。

  1. タブ ボタン全体ではなく、30x30 ピクセルのアイコンのみを提供する
  2. タブ項目に画像を設定したら、次のことを試してください。 [item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)]; // play with insets until it renders correctly
  3. UITabBar をサブクラス化しlayoutSubviews、最初の呼び出しsuperにオーバーライドしてから、好きなように画像を再配置します。推奨されません。将来の iOS バージョンで壊れる可能性があります。
于 2012-11-22T05:27:05.110 に答える
0

これをチェックして:

[self.tabBar setFrame:CGRectMake(self.tabBar.frame.origin.x, self.tabBar.frame.origin.y - 30, self.tabBar.frame.size.width, self.tabBar.frame.size.height + 30)];
于 2014-03-17T10:55:49.237 に答える
0

使用する -

tabBar.frame=CGRectMake(x,y,w,h);

このようにして、xCord、yCord、幅、高さを設定できます。

于 2012-05-21T05:58:15.273 に答える