Bagaimana caranya saya bisa menganimasikan perubahan warna batang UINavigationBar tetapi tidak pada UITabBar?

Saya menerapkan tema di aplikasi saya dan saya mengalami bug aneh (fitur?). Untuk beberapa alasan aneh, saya tidak dapat menggunakan UIView.animate di kelas UITabBarController khusus saya untuk menganimasikan perubahan warna UITabBar saya, tetapi kode yang sama persis berfungsi dengan baik di kelas khusus UINavigationController saya.

Apakah saya melewatkan sesuatu? Apakah ada hal lain yang bisa saya gunakan untuk menganimasikan perubahan warna? Saya telah menjelajahi Dokumen Apple tetapi tidak menemukan apa pun.

Berikut adalah kode yang saya gunakan dalam kedua kasus:

class customNavigationController: UINavigationController {
    @IBOutlet weak var navBar = ThemeManager.navigationbar

    func dusk(notification: NSNotification) {
        UIView.animateWithDuration(1, animations: {
            self.navBar?.barTintColor = UIColor(red: 79/255, green: 79/255, blue: 79/255, alpha: 1)
            self.navBar?.barStyle = UIBarStyle.Black

        })
    }
}

Dan:

class customTabController: UITabBarController {
    @IBOutlet weak var tab = ThemeManager.tabbar

    func dusk(notification: NSNotification) {
        UIView.animateWithDuration(1, animations: {
            self.tab?.barTintColor = UIColor(red: 79/255, green: 79/255, blue: 79/255, alpha: 1)
            self.tab?.barStyle = UIBarStyle.Black
        })
    }
}

person cyril    schedule 07.06.2015    source sumber


Jawaban (2)


Anda dapat menggunakan UIView.transitionWithView untuk memudarkan kedua status

UIView.transitionWithView(self.tab!, duration: 1.0, options: .BeginFromCurrentState | .TransitionCrossDissolve, animations: { () -> Void in
        self.tab!.barTintColor = UIColor(red: 79/255, green: 79/255, blue: 79/255, alpha: 1)
        self.tab!.barStyle = UIBarStyle.Black
    }, completion: nil)
person Allan Weir    schedule 30.06.2015
comment
Ini tidak berpengaruh sama sekali pada animasi :( - person cyril; 01.07.2015
comment
Aneh, saya mencobanya sendiri sebelum mempostingnya. Bisakah Anda membagikan kode Anda dengan penerapan ini? - person Allan Weir; 01.07.2015
comment
Sama halnya dengan kode kedua yang dikutip di atas. Saya mengganti UIView.animateWithDuration(1, animations: { self.tab?.barTintColor = UIColor(red: 79/255, green: 79/255, blue: 79/255, alpha: 1) self.tab?.barStyle = UIBarStyle.Black }) - person cyril; 01.07.2015
comment
Maaf, maksud saya, bisakah Anda menempelkan kode dengan perubahan yang saya sarankan di dalamnya. Atau apakah Anda sepenuhnya menyalin dan menempelkan apa yang saya katakan? Dua bagian utamanya adalah Anda menggunakan UIView. transisiWithView alih-alih animationWithDuration, dan Anda memiliki UIViewAnimationOptions.TransitionCrossDissolve dalam opsi. - person Allan Weir; 02.07.2015
comment
Saya melakukan persis seperti yang Anda jelaskan dan masih belum ada :( - person cyril; 03.07.2015
comment
Anda dapat memeriksanya dengan proyek uji ini jika Anda mau? dropbox.com/s/cssorc0z66sqapa/TestTabs.zip?dl=0 - person Allan Weir; 03.07.2015

Nah untuk mengubah warna pada tab bar secara pribadi saya menggunakan gambar yang sangat berbeda dengan warna yang berbeda masukkan deskripsi gambar di sini

Seperti yang Anda lihat, gambar pilihan saya adalah gambar kedua saya. Saat ini gambar itu tidak akan ditampilkan kecuali saya menambahkannya ke Atribut Runtime Buatan Pengguna

masukkan deskripsi gambar di sini

Setel Jalur Kunci ke Gambar yang dipilih, jenis ke Gambar, dan nilai gambar yang ingin Anda tampilkan saat disajikan. Saya harap ini menjawab pertanyaan Anda.

person Fallah    schedule 30.06.2015