簡體   English   中英

更改故事板中的標簽欄項目選定顏色

[英]Change tab bar item selected color in a storyboard

我想在選擇時將我的標簽欄項目更改為粉紅色,而不是默認的藍色。

如何使用 Xcode 6 中的故事板編輯器完成此操作?

這是我當前無法使用的設置,藍色背景有效,但粉紅色背景無效:

在此處輸入圖片說明

從 StoryBoard 添加名為“tintColor”的運行時顏色屬性。 這是有效的(對於 Xcode 8 及更高版本)。

如果你想要未選擇的顏色..你也可以添加unselectedItemTintColor

將 tintColor 設置為運行時屬性

這個優雅的解決方案在SWIFT 3.0SWIFT 4.2SWIFT 5.1上效果很好:

在故事板上:

  1. 選擇您的標簽欄
  2. 為選項卡欄上選定圖標的所需顏色設置名為tintColor運行時屬性
  3. 設置名為unselectedItemTintColor運行時屬性,用於選項卡欄上未選擇圖標的所需顏色

在此處輸入圖片說明

編輯:使用 Xcode 8/10,適用於 iOS 10/12 及更高版本

在 Swift 中,使用 xcode 7(及更高版本),您可以將以下內容添加到 AppDelegate.swift 文件中:

UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

這是完整方法的樣子:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // I added this line
    UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

    return true
}

在上面的例子中,我的項目是白色的。 “/255.0”是必需的,因為它需要一個從 0 到 1 的值。對於白色,我可以只使用 1。但是對於其他顏色,您可能會使用 RGB 值。

Xcode8我更改了情節ImageTint ,並且效果很好。

在此處輸入圖片說明

結果:

在此處輸入圖片說明

斯威夫特 3 | Xcode 10

如果您想讓所有標簽欄項目具有相同的顏色(選中和未選中)...


第1步

確保您的圖像資產設置為Render As = Template Image 這允許他們繼承顏色。

Xcode 資產


第2步

使用情節提要編輯器更改標簽欄設置,如下所示:

  • Tab Bar: Image Tint設置為您希望所選圖標繼承的顏色。
  • Tab Bar: Bar Tint設置為您希望標簽欄的顏色。
  • View: Tint設置為您希望在故事板編輯器中看到的顏色,這不會影響您的應用程序運行時的圖標顏色。

Xcode 故事板編輯器


第 3 步

步驟 1 和 2 將更改所選圖標的顏色。 如果你還想改變未選中項的顏色,則需要在代碼中進行。 我還沒有找到通過故事板編輯器來做到這一點的方法。

創建自定義標簽欄控制器類...

//  TabBarController.swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // make unselected icons white
        self.tabBar.unselectedItemTintColor = UIColor.white
    }
}

...並將自定義類分配給您的標簽欄場景控制器。

Xcode 故事板編輯器


如果您想知道如何通過故事板編輯器更改未選擇的圖標顏色,請告訴我。 謝謝!

將此代碼放在要更改顏色的視圖控制器的 viewDidLoad 中

[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];

最好的方法是在情節Image Tint中更改Image Tint

在此處輸入圖片說明

您還可以通過關鍵路徑設置選定的圖像條色調顏色:

在此處輸入圖片說明

希望能幫到你!! 謝謝

XCode 8.2、iOS 10、Swift 3:現在tabBar有一個unselectedItemTintColor屬性:

self.tabBar.unselectedItemTintColor = UIColor(red: 0/255.0, green: 200/255.0, blue: 0/255.0, alpha: 1.0)

您可以通過情節提要更改 UITabBarItem 的顏色,但如果您想通過代碼更改顏色,則非常簡單:

// 使用它來改變選定條的顏色

   [[UITabBar appearance] setTintColor:[UIColor blueColor]];

// 這用於更改未選中的欄(iOS 10)

   [[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];

// 此行用於更改所有標簽欄的顏色

   [[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];

不知何故,我們無法單獨使用情節提要更改選項卡欄所選項目的色調顏色,因此我在我的 ViewDidLoad 中添加了以下代碼,希望這會有所幫助。

[[UITabBar appearance] setTintColor:[UIColor whiteColor]]; 

將此代碼添加到您的應用程序委托 -did_finish_launching_with_options 函數中

UITabBar.appearance().tintColor = UIColor( red: CGFloat(255/255.0), green: CGFloat(99/255.0), blue: CGFloat(95/255.0), alpha: CGFloat(1.0) )

放入所需顏色的RGB

這是適用於 iOS 10 的 Swift 3 中的解決方案:

首先,您創建自己的標簽欄控制器子類並將其添加到故事板中的標簽控制器。 viewDidLoad()方法中,您可以自定義標簽欄。 這里需要說明的是, tabBartintColor屬性代表的是選中項的顏色,而不是未選中項的顏色! 為了更改未選擇項目的顏色,我建議循環遍歷每個項目並使用圖像的原始顏色,這樣它們就不會自動呈現為灰色。

class CustomTabBarVC: UITabBarController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()

        self.tabBar.tintColor = AppColor.normalRed
        self.tabBar.barTintColor = .white
        self.tabBar.isTranslucent = true

        if let items = self.tabBar.items
        {
            for item in items
            {
                if let image = item.image
                {
                    item.image = image.withRenderingMode( .alwaysOriginal )
                }
            }
        }
    }
}

這種方法的唯一缺點是您的項目圖像必須已經具有您想要的顏色。

您可以UITabBarController ,並在故事板中用它替換那個。 在子類的viewDidLoad實現中調用:

[self.tabBar setTintColor:[UIColor greenColor]];

故事板中的圖像色調對我有用。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM