Ubah warna bilah item tab yang dipilih di storyboard

175

Saya ingin mengubah item tab bar saya menjadi merah muda ketika dipilih, bukan biru default.

Bagaimana saya bisa melakukan ini menggunakan editor storyboard di Xcode 6?

Berikut adalah pengaturan saya saat ini yang tidak berfungsi, latar belakang biru berfungsi tetapi pink tidak berfungsi:

masukkan deskripsi gambar di sini

Deekor
sumber
Kemungkinan duplikat tab-bar-item-tint-color !
User31
Periksa jawaban ini, ini akan membantu Anda untuk solusinya: stackoverflow.com/a/58727092/7804300
Talha Ahmed

Jawaban:

408

Tambahkan atribut Warna Runtime bernama "tintColor" dari StoryBoard. Ini berfungsi ( untuk Xcode 8 ke atas ).

jika Anda ingin warna yang tidak dipilih .. Anda dapat menambahkan unselectedItemTintColorjuga.

mengatur tintColor sebagai Atribut Runtime

Mehul Thakkar
sumber
24
itu bekerja untuk saya ketika saya menambahkan properti ini ke UITabBarItem dan bukan UITabBar.
Sourabh86
1
Tetapi bagaimana Anda mengatur item tab bar warna yang tidak dipilih di storyboard?
Peter
1
Berfungsi sempurna untuk kasus saya - Saya perlu lima item tabBar menjadi warna unik saat dipilih. Saya dapat mengatur Atribut Runtime ini pada UITabBarItem, pada UINavigationControllerterhubung ke tabBar saya dan itu berfungsi dengan sempurna. Semua tanpa menulis kode apa pun yang sangat bagus, karena saya menggunakan kembali kelas VC tiga kali. Terima kasih!
rosshump
7
sebaliknya - ini adalah satu-satunya pendekatan yang berfungsi di iOS 10 (warna dari panel atribut tampaknya tidak berfungsi, dan atribut runtime "tintColor" dari uitabbaritem tidak berfungsi juga.
luky
5
StackOverflow 1: Apple 0
Sharukh Mastan
175

Solusi elegan ini sangat cocok untuk SWIFT 3.0 , SWIFT 4.2 dan SWIFT 5.1 :

Di Papan Cerita:

  1. Pilih Tab Bar Anda
  2. Atur Runtime Attibute yang disebut tintColor untuk warna yang diinginkan dari Ikon Pilihan pada bilah tab
  3. Setel Runtime Attibute yang disebut unselectedItemTintColor untuk warna yang diinginkan dari Ikon Tidak Dipilih pada bilah tab

masukkan deskripsi gambar di sini

Sunting: Bekerja dengan Xcode 8/10, untuk iOS 10/12 dan lebih tinggi .

Marcelo Gracietti
sumber
6
Terima kasih banyak. unselectedItemTintColor sangat jarang ditemukan
Rushi trivedi
4
solusi sempurna 'unselectedItemTintColor' untuk saya, terima kasih.
fozoglu
Apakah ini akan berhasil jika target penyebaran adalah 8.0 atau 9.0? Saya telah menggunakan Swift 3.0 dan Xcode 8.0 untuk pengembangan
Mamta
2
Penting untuk memilih bilah Tab, memang berfungsi di Swift 4 untuk saya.
Kontra Bulaquena
2
Luar biasa! Masih bekerja pada xCode 10 :) tidak menyegarkan editor visual tetapi bekerja sekali dikompilasi :)
Mihail Minkov
64

Di Swift, menggunakan xcode 7 (dan lebih baru), Anda bisa menambahkan yang berikut ke file AppDelegate.swift Anda:

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

Ini adalah apa yang tampak seperti metode lengkap:

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
}

Pada contoh di atas item saya akan berwarna putih. "/255.0" diperlukan karena mengharapkan nilai dari 0 hingga 1. Untuk putih, saya bisa saja menggunakan 1. Tapi untuk warna lain Anda mungkin akan menggunakan nilai RGB.

Jarrod
sumber
3
Tampaknya tidak ada metode lain yang berfungsi (lagi.) Ini berfungsi!
teddy
@Jarrod Saya bermain-main dengan ini selama hampir 1 jam, jawaban ini seharusnya memiliki lebih banyak suara. Terima kasih!
Lance Samaria
53

Pada Xcode8saya telah mengubah ImageTintdari storyboard dan itu berfungsi dengan baik.

masukkan deskripsi gambar di sini

Hasil:

masukkan deskripsi gambar di sini

Francisco Romero
sumber
1
Saat menggunakan gambar khusus, INI ADALAH yang bekerja untuk saya
Juanjo
1
Ini harus menjadi jawaban yang diterima. Itu tidak memerlukan atribut runtime yang berarti ini berfungsi di layar Luncurkan!
Chris Douglass
18

Swift 3 | Xcode 10

Jika Anda ingin membuat semua item bar tab dengan warna yang sama (dipilih & tidak dipilih) ...


Langkah 1

Pastikan aset gambar Anda disetel ke Render As = Templat Gambar . Ini memungkinkan mereka untuk mewarisi warna.

Aset Xcode


Langkah 2

Gunakan editor papan cerita untuk mengubah pengaturan bilah tab Anda sebagai berikut:

  • Atur Bilah Tab: Warna Gambar ke warna yang Anda ingin ikon yang dipilih untuk mewarisi.
  • Set Tab Bar: Bar Tint ke warna yang Anda inginkan dari tab bar.
  • Atur Tampilan: Warna ke warna yang ingin Anda lihat di editor storyboard, ini tidak mempengaruhi warna ikon ketika aplikasi Anda dijalankan.

Editor Papan Cerita Xcode


Langkah 3

Langkah 1 & 2 akan mengubah warna untuk ikon yang dipilih. Jika Anda masih ingin mengubah warna item yang tidak dipilih, Anda harus melakukannya dalam kode. Saya belum menemukan cara untuk melakukannya melalui editor storyboard.

Buat kelas pengontrol bilah tab kustom ...

//  TabBarController.swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

... dan tetapkan kelas khusus ke pengontrol adegan tab bar Anda.

Editor Papan Cerita Xcode


Jika Anda mengetahui cara mengubah warna ikon yang tidak dipilih melalui editor storyboard, beri tahu saya. Terima kasih!

Derek Soike
sumber
self.tabBar.unselectedItemTintColor = UIColor.white self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1) Bekerja untuk saya
Wahab Khan Jadon
9

letakkan kode ini di viewDidLoad dari view controller yang ingin Anda ubah warnanya

[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
Nick
sumber
1
Apakah tidak ada cara untuk mengubah semua tab?
Deekor
Masukkan saja kode dengan warna yang sama dalam tampilan tidak memuat semua tab Anda
Nick
Anda dapat menggunakan kode ini tepat setelah Anda membuat UITabController Anda, itu akan mengatur warna yang Anda sebutkan untuk semua item tab pada pilihan.
Jerrin
Tidak ada metode seperti itu setSelectedImageTintColor
Madhu Avinash
8

Anda juga dapat mengatur warna warna bar gambar yang dipilih berdasarkan jalur kunci:

masukkan deskripsi gambar di sini

Semoga ini bisa membantu Anda !! Terima kasih

Arvind Kumar
sumber
di iOS 9 itu tidak mengubah warna yang tidak dipilih
Saeed Rahmatolahi
Bagaimana hal itu membantu dalam mengubah warna ikon UITabBar?
Madhu Avinash
7

XCode 8.2, iOS 10, Swift 3: sekarang ada unselectedItemTintColoratribut untuk tabBar:

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

Anda dapat mengubah warna UITabBarItem dengan storyboard tetapi jika Anda ingin mengubah warna dengan kode itu sangat mudah:

// Gunakan ini untuk mengubah warna bilah yang dipilih

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

// Ini untuk mengubah bilah yang tidak dipilih (iOS 10)

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

// Dan baris ini untuk mengubah warna semua tabbar

   [[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
Genevios
sumber
setUnselectedItemTintColor hanya untuk iOS 10
ondermerol
5

Entah bagaimana kami tidak dapat mengubah warna warna Tab Bar item yang dipilih menggunakan storyboard saja, maka saya menambahkan kode di bawah ini di ViewDidLoad saya, semoga ini membantu.

[[UITabBar appearance] setTintColor:[UIColor whiteColor]]; 
skypirate
sumber
5

Tambahkan kode ini di fungsi delegasi aplikasi -did_finish_launching_with_options Anda

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

menempatkan RGB dari warna yang diperlukan

SHINTO JOSEPH
sumber
4

Ini adalah solusi di Swift 3 yang berfungsi di iOS 10:

Pertama, Anda membuat subkelas pengontrol tab bar dan menambahkannya ke pengontrol tab di storyboard Anda. Dalam viewDidLoad()metode ini Anda dapat menyesuaikan tab bar. Harus dinyatakan di sini bahwa tintColoratribut tabBarmewakili warna item yang dipilih bukan warna yang tidak dipilih! Untuk mengubah warna item yang tidak dipilih, saya sarankan untuk mengulang setiap item dan menggunakan warna asli dari gambar Anda, sehingga mereka tidak diterjemahkan sebagai abu-abu secara otomatis.

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

Satu-satunya downside dengan pendekatan ini adalah bahwa gambar item Anda harus sudah memiliki warna yang Anda inginkan.

arauter
sumber
Rumit. Jawaban Jarrod bekerja dengan baik dengan semua ikon.
Jose Ramirez
4

Cara terbaik ini adalah dengan mengubah Image Tintstoryboard

Jadian
sumber
2

Anda dapat mensubklasifikasikan UITabBarController, dan menggantikannya dengan itu di storyboard. Dalam viewDidLoadimplementasi panggilan subclass Anda ini:

[self.tabBar setTintColor:[UIColor greenColor]];
untung-untungan
sumber
mendapatkan:'UITabBar' does not have a member named 'setSelectedImageTintColor'
Deekor
Juga saya menggunakan cepat jadi saya meletakkan: self.tabBar.setSelectedImageTintColor = UIColor.greenColortidak yakin apakah itu benar atau tidak
Deekor
2
@ Deekor tintColorbukan selectedImageTintColor, btw selectedImageTintColorsudah usang di iOS 8.
chancyWu