ฉันจะเคลื่อนไหวการเปลี่ยนสีแถบสีของ UINavigationBar แต่ไม่ใช่ UITabBar ได้อย่างไร

ฉันกำลังใช้ธีมในแอปพลิเคชันของฉัน และพบข้อผิดพลาดแปลกๆ (ฟีเจอร์?) ด้วยเหตุผลแปลก ๆ บางอย่าง ฉันไม่สามารถใช้ UIView.animate ในคลาส UITabBarController ที่กำหนดเองของฉันเพื่อทำให้การเปลี่ยนสีของ UITabBar ของฉันเคลื่อนไหวได้ แต่รหัสเดียวกันนั้นทำงานได้อย่างสมบูรณ์ในคลาสที่กำหนดเองของ UINavigationController ของฉัน

ฉันพลาดอะไรไปรึเปล่า? มีอะไรอีกบ้างที่ฉันสามารถใช้เพื่อทำให้การเปลี่ยนสีเคลื่อนไหวได้ ฉันได้ค้นหาเอกสาร Apple แล้ว แต่ไม่พบอะไรเลย

นี่คือรหัสที่ฉันใช้ทั้งสองกรณี:

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

        })
    }
}

และ:

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



คำตอบ (2)


คุณสามารถใช้ UIView.transitionWithView เพื่อจางหายไประหว่างสองสถานะได้

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
สิ่งนี้ไม่มีผลกระทบต่อแอนิเมชั่นเลย :( - person cyril; 01.07.2015
comment
แปลกดี ผมลองเองก่อนจะโพสต์ คุณสามารถแบ่งปันรหัสของคุณกับสิ่งนี้ได้หรือไม่? - person Allan Weir; 01.07.2015
comment
มันเหมือนกับรหัสที่ยกมาที่สองด้านบน ฉันแทนที่ 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
ขออภัย ฉันหมายความว่าคุณช่วยวางโค้ดที่มีการเปลี่ยนแปลงที่ฉันแนะนำไว้ได้ไหม หรือคุณคัดลอกและวางสิ่งที่ฉันพูดโดยสมบูรณ์? สองส่วนหลักคือคุณกำลังใช้ UIView transitionWithView แทนที่จะเป็น AnimationWithDuration และคุณมี UIViewAnimationOptions.TransitionCrossDissolve ในตัวเลือก - person Allan Weir; 02.07.2015
comment
ฉันทำสิ่งที่คุณอธิบายแล้ว แต่ก็ยังไม่มีอะไร :( - person cyril; 03.07.2015
comment
คุณสามารถตรวจสอบกับโครงการทดสอบนี้ได้หากต้องการ? dropbox.com/s/cssorc0z66sqapa/TestTabs.zip?dl=0< /ก> - person Allan Weir; 03.07.2015

ในการเปลี่ยนสีบนแถบแท็บเป็นการส่วนตัว ฉันใช้รูปภาพที่แตกต่างกันทั้งหมดซึ่งมีสีต่างกัน ป้อนคำอธิบายรูปภาพที่นี่

อย่างที่คุณเห็นภาพที่ฉันเลือกคือภาพที่สองของฉัน ตอนนี้มันจะไม่แสดงรูปภาพนั้นเว้นแต่ฉันจะเพิ่มลงในแอตทริบิวต์รันไทม์ที่กำหนดโดยผู้ใช้

ป้อนคำอธิบายรูปภาพที่นี่

ตั้งค่า Keypath เป็น SelectedImage ประเภทเป็น Image และค่าของภาพที่คุณต้องการแสดงเมื่อนำเสนอ ฉันหวังว่านี้ตอบคำถามของคุณ.

person Fallah    schedule 30.06.2015