17

ここに画像の説明を入力

タブバーの「More..」テキストの色をアイコンの色に合わせて変更するにはどうすればよいですか。(今はタブバーでパフォーマンスが選択されています)

TitleTextAttributes を設定しようとしました。

[moreItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaLTStd-Roman" size:10.0f], NSFontAttributeName,  [UIColor yellowColor],NSForegroundColorAttributeName , nil]

ただし、テキストの色は常に黄色に設定されています。アイテムが選択されている場合でも。このような ここに画像の説明を入力

選択したときは白に設定しようとしていますが、選択されていないときはアイコンの色と一致するはずです。ありがとう..どんな提案も本当に役に立ちます。

4

12 に答える 12

18

私は自分の質問に対する答えを見つけました。

perforamceItem setTitleTextAttributes:2 つの異なる状態を設定できます。

  • forState:UIControlStateNormal
  • forState:UIControlStateHighlighted

次のコードを追加しました

 [performanceItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaLTStd-Roman" size:10.0f], NSFontAttributeName,  [UIColor yellowColor], NSForegroundColorAttributeName,nil] forState:UIControlStateNormal];

[performanceItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaLTStd-Roman" size:10.0f], NSFontAttributeName,  [UIColor whiteColor], NSForegroundColorAttributeName,nil] forState:UIControlStateHighlighted];

黄色をアイコンの色に置き換える必要があります。これが彼らが今見ている方法です。

Moreを選択した場合

Moreを選択した場合

パフォーマンス選択時

パフォーマンス選択時

于 2013-09-09T04:32:04.070 に答える
9

Swift 5.1 + iOS 12.4 & iOS 13 :

/// Subclass of `UITabBarController` that is used to set certain text colors for tab bar items.
class TabBarController: UITabBarController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        if let items = tabBar.items {
            // Setting the title text color of all tab bar items:
            for item in items {
                item.setTitleTextAttributes([.foregroundColor: UIColor.black], for: .selected)
                item.setTitleTextAttributes([.foregroundColor: UIColor.lightGray], for: .normal)
            }
        }
    }
}
于 2019-08-23T08:21:51.023 に答える
6

これは迅速なバージョンです:-

        for item in self.mainTabBar.items! {

          let unselectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()]
          let selectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()]
          item.setTitleTextAttributes(unselectedItem as? [String : AnyObject], forState: .Normal)
          item.setTitleTextAttributes(selectedItem as? [String : AnyObject], forState: .Selected)

        }

または、単に Appdelegate で変更することもできます:-

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blueColor()], forState: .Selected)
    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blackColor()], forState: .Normal)
    // Override point for customization after application launch.
    return true
}
于 2015-11-02T04:50:26.477 に答える
2

@skywinderの回答の迅速なバージョン:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.whiteColor()], forState: .Normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.whiteColor()], forState: .Selected)
于 2016-08-30T23:06:54.280 に答える
1

これは簡単です。単に UITabBarItem をサブクラス化し、それをストーリーボードまたはコードのいずれかでタブ バー項目のクラスに割り当てるだけです。以下は私にとって完璧に機能します。

import UIKit

class PPTabBarItem: UITabBarItem {
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
    }
    override init() {
        super.init()
        commonInit()
    }

    func commonInit() {
        self.setTitleTextAttributes([NSFontAttributeName: UIFont.systemFontOfSize(13), NSForegroundColorAttributeName:UIColor.blackColor()], forState: UIControlState.Normal)

        self.setTitleTextAttributes([NSFontAttributeName: UIFont.systemFontOfSize(13), NSForegroundColorAttributeName:UIColor.yellowColor()], forState: UIControlState.Selected)
    }
}

skywinder のソリューションは優れていますが、グローバル スコープをトリガーします。

于 2016-03-22T08:33:24.110 に答える