2017-02-04 3 views
1

タブごとに「色合い」を変更したい問題。しかし、以下のコードはまったく動作しません。tintColorをカスタマイズしてUITabBarItemのサイズを変更する方法

ボタンイメージを追加し、 "UIEdgeInsetsMake"を使用してサイズを変更したいとします。しかし、ボタンに触れるたびに、ボタンのサイズが変わってしまいます。どうしてか分かりません。

そして、私はスウィフト3.

class MainView: UITabBarController { 

    var TabFirst = UITabBarItem() 
    var TabSecond = UITabBarItem() 
    var TabThird = UITabBarItem() 
    var TabForth = UITabBarItem() 
    var TabFifth = UITabBarItem() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tabBar.barTintColor = UIColor.white 

     TabFirst = self.tabBar.items![0] 
     TabFirst.image = UIImage(named: "btn_1-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     TabFirst.imageInsets = UIEdgeInsetsMake(12, 10, 11, 11) 
     tabBar.items?[0].title = "length" 

     TabSecond = self.tabBar.items![1] 
     TabSecond.image = UIImage(named: "btn_2-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     tabBar.items?[1].title = "length" 

     TabThird = self.tabBar.items![2] 
     TabThird.image = UIImage(named: "btn_3-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     tabBar.items?[2].title = "length" 

     TabForth = self.tabBar.items![3] 
     TabForth.image = UIImage(named: "btn_4-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     tabBar.items?[3].title = "length" 

     TabFifth = self.tabBar.items![4] 
     TabFifth.image = UIImage(named: "btn_5-1")!//.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
     tabBar.items?[4].title = "length" 

    } 



    override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 

     switch item.tag{ 
     case 0: 
      print("FirstTab") 
      UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 67/255.0, blue: 99/255.0, alpha: 1.0) 

     case 1: 
      print("SecondTab") 
      UITabBar.appearance().tintColor = UIColor(red: 237/255.0, green: 193/255.0, blue: 53/255.0, alpha: 1.0) 

     case 2: 
      print("ThirdTab") 
      UITabBar.appearance().tintColor = UIColor(red: 70/255.0, green: 183/255.0, blue: 128/255.0, alpha: 1.0) 

     case 3: 
      print("ForthTab") 
      UITabBar.appearance().tintColor = UIColor(red: 12/255.0, green: 195/255.0, blue: 199/255.0, alpha: 1.0) 

     case 4: 
      print("FifthTab") 
      UITabBar.appearance().tintColor = UIColor(red: 105/255.0, green: 72/255.0, blue: 170/255.0, alpha: 1.0) 

     default: 
      break 
     } 
    } 

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

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

} 
+0

http://stackoverflow.com/questions/27890936/changing-selectedimage-on-uitabbaritem-in-swift代わりに、選択した画像を変更する必要がありますが、色合いを変更したい場合は、http://stackoverflow.com/questions/ 20783193/setting-tint-color-selected-tab-in-uitabbar –

+0

@スニーク画像を変更する方法ではなく、TintColorを変更したいだけです。そして、プログラミングコードを使用してそれを変更する方法はありますか?ストーリーボードメニューを使用しないでください。そして、私は本当にRESIZINGの問題を解決したい。 –

答えて

0

EDIT使用しています: あなたのswitch文で休憩が欠落しています

switch item.tag{ 

また、あなたは上のスイッチを行っているが私はあなたのコードでそれに応じてタグを付けた場所はどこにも表示されません。代わりにアイテムのインデックスを取得する必要があります。

私はスウィフトコーダないよ、これはあなたがあなたにヒントを与えることをObjective-Cでそれを行う方法です。

NSInteger indexOfTab = [[self.tabBar items] indexOfObject:item]; 

次にあなたがindexOfTabのあなたのswitch文を実行します。

Here is the Swift version.

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 
    print("the selected index is : \(tabBar.items.index(of: item))") 
} 

あなたが個別に "tintColor" を変更したい場合は、代わりにカスタムselectedImageを設定する必要があります。

を注意:デフォルトで

を、非選択および選択された画像は、ソース画像内のアルファ値から を自動的に作成しています。システム の着色を防ぐには、alwaysOriginalで画像を提供してください。

documentationまでは、UITabBarItemの「tintColor」プロパティはありません。

しかし、UITabBar自体はtintColor propertyです。しかし、これはではなく、を個別に設定しています。

色合いの色

あなたは ティント(barTintColor)フィールドを使用してバーの背景用のカスタム色合いの色を指定することができます。デフォルトの背景色合いは白色です。

画像の色合い(selectedImageTintColor)フィールドを使用して、そのタブが選択されているときに、 アイテムの色合いを指定します。デフォルトでは、その色は 青です。

代わりにresize your original image、または必要に応じてcheck this questionを指定する必要があります。ただし、UITabBarおよびUITabBarItemのカスタマイズは、ドキュメントで読めるものに限定されています。

個別にカスタマイズする場合は、代わりにカスタムソリューションを検索または作成することをおすすめします。

+0

ありがとうございました!ですから、私はalwaysOriginalで画像を使うべきです。しかし、画像サイズの問題はどうですか?タブバーの項目がタッチされるたびにサイズが変更されることは理解できません。 "UIEdgeInsetsMake(12、10、11、11)"を使用しないと、サイズ変更されません。しかし、画像はTabbar領域にはまったく適合しません。だからこそ私はこのコードを使ってそれを適合させました。あなたはそれについて考えていますか? –

+0

@FrozenSea私はサイズ変更の問題で私の答えを更新しました。イメージのサイズを修正する方法については、こちらをご覧ください:https://developer.apple.com/ios/humanここをクリックして、イメージサイズを修正してください。 -interface-guidelines/graphics/image-size-and-resolution /、これがあなたの質問に答えるなら、答えとしてマークしてください:) GL –

+0

@FrozenSea BTW。あなたのコードをすばやく見れば、あなたはスイッチステートメントの中断がありません。 switch item.tag {、たぶん色合いを変えることができない理由です。 –

関連する問題