Storyboardingを使用していますが、5つのタブがあるTab Bar Controllerがあります。ストーリーボードでは、タブバー項目の画像を設定できます。 Apple docsは、各タブバー項目に2つのアイコンを用意することを提案しています-1つは選択状態用、もう1つは非選択状態用です。
ストーリーボードを使用してこれを行う方法を理解することはできません。
ストーリーボードを使用して、選択したタブバーの画像を設定できます。試したところ、うまくいきました。 UITabbarItemを選択し、実行時属性「selectedImage」を追加し、「画像」として「タイプ」を選択し、値として画像の名前を指定します。
XCode 6.0を使用しており、私の最小展開ターゲットはiOS 8.0です。
はい、これはストーリーボードを使用して行うことはできません-コードを記述する必要があります。
UINavigationViewController
のviewDidLoad
メソッドでは、次のコードを記述できます-
UITabBar *tabBar = self.tabBar;
UITabBarItem *targetTabBarItem = [[tabbar items] objectAtIndex:0]; // whichever tab-item
UIImage *selectedIcon = [UIImage imageNamed:@"name-of-selected-image.png"];
[targetTabBarItem setSelectedImage:selectedIcon];
これをストーリーボードで簡単に行うことができます。所有する各tabviewcontrollerには、階層内にTab Barアイテム(小さな青い星のように見える)が含まれている必要があります。これをクリックすると、右側の設定が下の画像のようになります。タブバーのタイトルと画像はここで変更できます。
アイコンは、対応するView Controllerで設定する必要があります。これを行うと、コードを変更することなく、ストーリーボードのメインタブコントローラー内のビューコントローラーの順序を自由に再配置できます(objectAtIndex:0
)各アイコンごと。
次の行をviewDidLoad
メソッドに追加します。
if (self.navigationController.viewControllers.count < 2)
self.navigationController.tabBarItem.selectedImage = [UIImage imageNamed:@"image-selected.png"];
if
conditionを使用すると、ボタンが最上位のView Controllerに対してのみ変更されるようになります。これは、ナビゲーション階層のView ControllerをサブView Controllerとして再利用する場合に必要です。
Swift 3.0->タブバーボタンの画像を設定する理想的な方法は次のとおりです。
最初にボタンに使用する画像を設定します:
let homeImage = UIImage(named: "TabHome")
let homeTappedImage = UIImage(named: "TabHomeRed")
次に、タイプUITabButtonItemのボタンを設定します。
let homeButton = UITabBarItem(title: homeText, image: homeImage, selectedImage: homeTappedImage)
//with this method you set the image when the button is not selected
homeButton.image = homeImage?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
//with this method you set the image when the button is selected
homeButton.selectedImage = homeTappedImage?.withRenderingMode(.alwaysOriginal)