2017-02-04 6 views
0

ストーリーボードでUITabbarコントローラーを作成し、5つのタブバーボタンを作成しました。ストーリーボードに追加されたタブバーアイテムをカスタマイズする方法

しかし、タブバーアイテムの画像のサイズや色を制御することはできません。 そして、デフォルトの色を使用せずに、PNGファイルを使用してボタンの色と図形をカスタマイズしたいと思います。

しかし、以下のコードは、タブバーtintcolor以外はうまくいきません。

class MainView: UITabBarController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tabBar.barTintColor = UIColor.white 

} 

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 
    switch item.tag{ 
    case 0: 
     print(item.tag) 
     UITabBar.setItems(item[0]) = UITabBarItem(title: "Magzine", image: UIImage(named: "exhibiter.png"), selectedImage: UIImage(named: "exhibiterselected.png")) 
    case 1: 
     print("") 
    case 2: 
     print("") 
    case 3: 
     print("") 
    case 4: 
     print("") 
    default: 
     break 
    } 
} 

override func viewWillAppear(_ animated: Bool) { 
    UIApplication.shared.isStatusBarHidden = false 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

}

+0

のように使用することができ、その後、設定された画像は、元のチェックの参考のためこの回答へのレンダリングモードhttp://stackoverflow.com/a/38560183/6433023 –

+0

ストーリーボードを使用して、選択した状態や選択していない状態などのタブバーアイテムを管理できます。忘れないで!カスタム画像をタブバー項目に設定する場合は?画像には接尾辞が含まれている必要があります。システムから必要とされるのはどれですか。 – Mannopson

答えて

3

あなたのタブバーの項目であなたのストーリーボードのデフォルトを選択した画像の両方を設定し、この

class TabBarViewController: UITabBarController { 

    required init(coder aDecoder: NSCoder) { 

    super.init(coder: aDecoder)! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    UITabBar.appearance().tintColor = UIColor(red: 254/255.0, green: 105/255.0, blue: 51/255.0, alpha: 100.0) 

    for i in 0 ..< self.tabBar.items!.count { 

     switch i { 

     case 0: 

      tabBar.items?[0].title = "Home" 
      let firstTab = self.tabBar.items![i] as UITabBarItem 
      learnTab.image = UIImage(named: "Homedeselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      firstTab.selectedImage = UIImage(named: "Homedeselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      firstTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0) 
      firstTab.titlePositionAdjustment = UIOffsetMake(0, -4) 


     case 1: 

      tabBar.items?[1].title = "Request" 
      let secondTab = self.tabBar.items![i] as UITabBarItem 
      secondTab.image = UIImage(named: "RequestDeselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      secondTab.selectedImage = UIImage(named: "Requestselected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      secondTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0) 
      secondTab.titlePositionAdjustment = UIOffsetMake(0, -4) 

     case 2: 

      tabBar.items?[2].title = "Renew" 
      let thirdTab = self.tabBar.items![i] as UITabBarItem 
      thirdTab.image = UIImage(named: "RenewDeSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      thirdTab.selectedImage = UIImage(named: "RenewSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      thirdTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0) 
      thirdTab.titlePositionAdjustment = UIOffsetMake(0, -4) 

     case 3: 

      tabBar.items?[3].title = "ReSell" 
      let forthTab = self.tabBar.items![i] as UITabBarItem 
      forthTab.image = UIImage(named: "ReSellDeSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      forthTab.selectedImage = UIImage(named: "ReSellSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      forthTab.imageInsets = UIEdgeInsetsMake(-1, 0, 1, 0) 
      forthTab.titlePositionAdjustment = UIOffsetMake(0, -4) 

     case 4: 

      tabBar.items?[4].title = "ReCycle" 
      let fifthTab = self.tabBar.items![i] as UITabBarItem 
      fifthTab.image = UIImage(named: "ReCycleDeSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      fifthTab.selectedImage = UIImage(named: "ReCycleSelected")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
      fifthTab.imageInsets = UIEdgeInsetsMake(-2, 0, 2, 0) 
      fifthTab.titlePositionAdjustment = UIOffsetMake(0, -5) 

     default: 
      break 
     } 
    } 
} 

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 




    } 

} 
+0

ありがとう!しかし、 "ImageInsets"を使用するためには、ボタンのサイズはタッチするたびに変更されます。あなたはこの問題を解決する方法を知っていますか? –

+0

これはボタンサイズではなく、画像サイズです!必要なPNG画像がすべて正しく読み込まれていることを確認してください。 iOSでは「[email protected]」や「[email protected]」と同じタイプのイメージ名が認識されるためです。がんばろう – Mannopson

関連する問題