Film şeridinde sekme çubuğu öğesini seçilen rengi değiştirme


175

Sekme çubuğu öğelerimi varsayılan mavi yerine seçildiğinde pembe olarak değiştirmek istiyorum.

Xcode 6'daki film şeridi düzenleyicisini kullanarak bunu nasıl başarabilirim?

İşte benim mevcut ayar çalışmıyor, mavi arka plan çalışır ama pembe çalışmıyor:

resim açıklamasını buraya girin



Çözüm için size yardımcı olacak bu cevabı kontrol edin: stackoverflow.com/a/58727092/7804300
Talha Ahmed

Yanıtlar:


408

StoryBoard'dan "tintColor" adlı Çalışma Zamanı Rengi özniteliğini ekleyin. Bu çalışıyor ( Xcode 8 ve üstü için ).

seçili olmayan renk istiyorsanız .. siz de ekleyebilirsiniz unselectedItemTintColor.

tintColor'ı Çalışma Zamanı Özelliği olarak ayarlama


24
Bu özelliği UITabBar'a değil, UITabBarItem'e eklediğimde benim için çalıştı.
Sourabh86

1
Ancak sekme çubuğu öğesini film şeridinde seçili olmayan rengi nasıl ayarlarsınız?
Peter

1
Benim durumum için mükemmel çalışıyor - Beş tabBar öğemin seçildiğinde benzersiz renkler olması gerekiyor. TabBar'ım bağlı UITabBarItem, bu Çalışma Zamanı Özniteliği ayarlamak başardı UINavigationControllerve kusursuz çalışıyor. Üç kez bir VC sınıfı yeniden kullanıyorum gibi tüm herhangi bir kod yazmadan da harika. Teşekkürler!
rosshump

7
tersine - bu iOS 10'da çalışan tek yaklaşımdır (özellikler panelinden renk tonu çalışmıyor gibi görünüyor ve uitabbaritem'in çalışma zamanı özelliği "tintColor" da çalışmıyor.
luky

5
StackOverflow 1: Elma 0
Sharukh Mastan

175

Bu zarif çözüm SWIFT 3.0 , SWIFT 4.2 ve SWIFT 5.1'de harika çalışıyor :

Storyboard'da:

  1. Sekme Çubuğunuzu seçin
  2. Set bir çalışma zamanı attibute denilen tintColor istenen renk için seçilen Simge sekme çubuğunda
  3. Sekme çubuğundaki Seçilmemiş Simgenin istenen rengi için unselectedItemTintColor adlı bir Çalışma Zamanı Özniteliği ayarlayın

resim açıklamasını buraya girin

Düzenleme: iOS 10/12 ve üstü için Xcode 8/10 ile çalışma .


6
Çok teşekkürler. unselectedItemTintColor çok nadir bulur
Rushi trivedi

4
'unselectedItemTintColor' benim için mükemmel bir çözüm teşekkürler.
Mayıs

Dağıtım hedefi 8.0 veya 9.0 ise bu işe yarar mı? Geliştirme için swift 3.0 ve Xcode 8.0 kullandım
Mamta

2
Tab çubuğunu seçmek önemlidir, gerçekten Swift 4'te benim için çalıştı.
Eksileri Bulaquena

2
Mükemmel! Hala xCode 10 üzerinde çalışıyor :) görsel editörü yenilemez ancak derlendiğinde çalışır :)
Mihail Minkov

64

Swift'te, xcode 7'yi (ve daha yenisini) kullanarak AppDelegate.swift dosyanıza aşağıdakileri ekleyebilirsiniz:

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

Tam yöntemin şekli budur:

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
}

Yukarıdaki örnekte öğem beyaz olacak. "/255.0" gereklidir, çünkü 0'dan 1'e kadar bir değer bekler. Beyaz için 1'i kullanmış olabilirdim. Ancak diğer renkler için muhtemelen RGB değerleri kullanacaksınız.


3
Diğer yöntemlerin hiçbiri işe yaramıyor (artık.) Bu işe yarıyor!
teddy

@Isarrod Ben neredeyse 1 saat boyunca bu ile dalga geçiyordu, bu cevap daha fazla oy olmalı. Teşekkürler!
Lance Samaria

53

Üzerinde film şeridini Xcode8değiştirdim ImageTintve iyi çalışıyor.

resim açıklamasını buraya girin

Sonuç:

resim açıklamasını buraya girin


1
Özel görüntüler kullanırken BU benim için işe
yarayan

1
Bu kabul edilen cevap olmalı. Çalışma zamanı özniteliği gerektirmez, bu bunun Başlat ekranlarında çalıştığı anlamına gelir!
Chris Douglass

18

Swift 3 | Xcode 10

Tüm sekme çubuğu öğelerini aynı renkte yapmak istiyorsanız (seçili ve seçili değil) ...


Aşama 1

Resim varlıklarınızın Farklı Oluştur = Şablon Resmi olarak ayarlandığından emin olun . Bu onların rengini devralmalarını sağlar.

Xcode Varlıkları


Adım 2

Sekme çubuğu ayarlarınızı aşağıdaki gibi değiştirmek için film şeridi düzenleyicisini kullanın:

  • Sekme Çubuğunu Ayarla : Görüntü Tonunu seçilen simgenin devralmasını istediğiniz renge ayarlayın .
  • Sekme Çubuğu: Çubuk Tonunu sekme çubuğunun olmasını istediğiniz renge ayarlayın .
  • Görünümü Ayarla : Film şeridi düzenleyicisinde görmek istediğiniz renge tonlayın, bu, uygulamanız çalıştırıldığında simge rengini etkilemez.

Xcode Storyboard Düzenleyici


Aşama 3

Adım 1 ve 2, seçilen simgenin rengini değiştirir. Seçili olmayan öğelerin rengini hala değiştirmek istiyorsanız, kodda yapmanız gerekir. Film şeridi düzenleyicisi aracılığıyla bunu yapmanın bir yolunu bulamadım.

Özel sekme çubuğu denetleyici sınıfı oluşturma ...

//  TabBarController.swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

... ve özel sınıfı sekme çubuğu sahne denetleyicinize atayın.

Xcode Storyboard Düzenleyici


Seçilmeyen simge rengini film şeridi düzenleyicisi aracılığıyla nasıl değiştireceğinizi anlarsanız lütfen bize bildirin. Teşekkürler!


self.tabBar.unselectedItemTintColor = UIColor.white self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1) Benim için çalış
Wahab Khan Jadon

9

bu kodu rengini değiştirmek istediğiniz görünüm denetleyicisinin viewDidLoad öğesine koyun

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

1
Tüm sekmeler için değiştirmenin bir yolu yok mu?
Deekor

Tüm sekmelerinizin yükünü aynı renkte
Nick

bu kodu UITabController'ınızı yaptıktan hemen sonra kullanabilirsiniz, seçimdeki tüm sekme öğeleri için bahsettiğiniz rengi ayarlar.
Jerrin

Böyle bir yöntem seti yokSelectedImageTintColor
Madhu Avinash

8

Seçilen görüntü çubuğu renk tonunu anahtar yoluna göre de ayarlayabilirsiniz:

resim açıklamasını buraya girin

Bu size yardımcı olacağını umuyoruz !! Teşekkürler


iOS 9'da seçili olmayan rengi değiştirmiyor
Saeed Rahmatolahi

Bu UITabBar simgesinin rengini değiştirmeye nasıl yardımcı olur?
Madhu Avinash

7

XCode 8.2, iOS 10, Swift 3: şimdi bir unselectedItemTintColorözellik var tabBar:

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

6

Storyboard ile renkleri UITabBarItem değiştirebilirsiniz, ancak renkleri kodla değiştirmek istiyorsanız çok kolay:

// Seçilen çubuğun rengini değiştirmek için bunu kullanın

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

// Seçili olmayan çubuğu değiştirmek için bu (iOS 10)

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

// Ve tüm sekme çubuğunun rengini değiştirmek için bu satır

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

setUnselectedItemTintColor sadece iOS 10 içindir
ondermerol

5

Her nasılsa Sekme Çubuğu seçilen öğeyi renk tonunu tek başına film şeridini kullanarak değiştiremiyoruz, bu nedenle ViewDidLoad'ımın altına aşağıdaki kodu ekledim, umarım bu yardımcı olur.

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

5

Bu kodu uygulama temsilci -did_finish_launching_with_options işlevine ekleyin

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

RGB'yi istediğiniz rengin koyun


4

İOS 10'da çalışan Swift 3'teki çözüm budur:

İlk olarak, kendi sekme çubuğu denetleyici alt sınıfınızı oluşturur ve film şeridinizdeki sekme denetleyicinize eklersiniz. Gelen viewDidLoad()yöntemle sonra sekme çubuğunu özelleştirebilirsiniz. Burada tintColor, tabBartemsil edilenlerin niteliğinin, seçili olmayanların rengini değil, seçilen öğenin rengini temsil ettiği belirtilmelidir! Seçili olmayan öğelerin rengini değiştirmek için, her bir öğenin arasında geçiş yapmanızı ve görüntülerinizin orijinal renklerini kullanmanızı öneririm, böylece otomatik olarak gri renkte görüntülenmezler.

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 )
                }
            }
        }
    }
}

Bu yaklaşımın tek dezavantajı, ürün resimlerinizin hedeflediğiniz renkte olması gerektiğidir.


Karmaşık. Jarrod'un cevabı tüm simgelerle iyi çalışır.
Jose Ramirez

4

Bu en iyi yol Image Tintfilm şeridinde değişiklik yapmaktır


2

UITabBarControllerFilm şeridinde alt sınıfı sınıflandırabilir ve onunla değiştirebilirsiniz. Senin içinde viewDidLoadalt sınıf uygulanması diyoruz:

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

elde:'UITabBar' does not have a member named 'setSelectedImageTintColor'
Deekor

Ayrıca ben koymak hızlı kullanıyorum: Ben self.tabBar.setSelectedImageTintColor = UIColor.greenColordoğru olup olmadığını emin değilim
Deekor

2
@Deekor tintColordeğil selectedImageTintColor, btw selectedImageTintColoriOS 8'de kullanımdan kaldırıldı
chancyWu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.