เปลี่ยนสีของแถบรายการที่เลือกในกระดานเรื่องราว


175

ฉันต้องการเปลี่ยนรายการในแถบแท็บเป็นสีชมพูเมื่อเลือกแทนสีน้ำเงินเริ่มต้น

ฉันจะทำสิ่งนี้ให้สำเร็จได้อย่างไรโดยใช้เครื่องมือแก้ไขสตอรีบอร์ดใน Xcode 6

นี่คือการตั้งค่าปัจจุบันของฉันซึ่งไม่ทำงานพื้นหลังสีน้ำเงินใช้งานได้ แต่สีชมพูไม่ทำงาน:

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


อาจเป็นไปได้ซ้ำกับtab-bar-item-tint-color !
31

ตรวจสอบคำตอบนี้มันจะช่วยคุณในการแก้ปัญหา: stackoverflow.com/a/58727092/7804300
Talha Ahmed

คำตอบ:


408

เพิ่มคุณสมบัติ Runtime Color ชื่อ "tintColor" จาก StoryBoard สิ่งนี้ใช้งานได้ ( สำหรับ Xcode 8 ขึ้นไป )

ถ้าคุณต้องการสีที่ไม่ได้เลือก .. คุณก็สามารถเพิ่มได้unselectedItemTintColorเช่นกัน

การตั้งค่า tintColor เป็นคุณสมบัติของรันไทม์


24
มันใช้งานได้สำหรับฉันเมื่อฉันเพิ่มคุณสมบัตินี้ใน UITabBarItem ไม่ใช่ UITabBar
Sourabh86

1
แต่คุณจะตั้งค่ารายการแถบแท็บสีที่ไม่ได้เลือกในกระดานเรื่องราวได้อย่างไร
ปีเตอร์

1
ใช้งานได้สมบูรณ์แบบสำหรับเคสของฉัน - ฉันต้องการแท็บห้าแถบของฉันเป็นสีที่ไม่ซ้ำกันเมื่อเลือก ฉันสามารถตั้งค่าแอททริบิวต์รันไทม์นี้บนUITabBarItemบนที่UINavigationControllerเชื่อมต่อกับ tabBar ของฉันและทำงานได้อย่างไม่มีที่ติ ทั้งหมดโดยไม่ต้องเขียนโค้ดใด ๆ ด้วยซึ่งยอดเยี่ยมเพราะฉันใช้คลาส VC ซ้ำสามครั้ง ขอบคุณ!
rosshump

7
ในทางกลับกัน - นี่เป็นวิธีการเดียวที่ใช้งานได้กับ iOS 10 (โทนสีจากแผงคุณลักษณะดูเหมือนว่าจะไม่ทำงานและแอตทริบิวต์ "tintColor" ของ uitabbaritem ก็ใช้งานไม่ได้เช่นกัน
luky

5
StackOverflow 1: Apple 0
Sharukh Mastan

175

โซลูชันที่สวยงามนี้ใช้งานได้ดีกับSWIFT 3.0 , SWIFT 4.2และSWIFT 5.1 :

บนกระดานเรื่องราว:

  1. เลือกแถบแท็บของคุณ
  2. ตั้งค่าRuntime Attibuteชื่อtintColorสำหรับสีที่ต้องการของไอคอนที่เลือกบนแถบแท็บ
  3. ตั้งค่าRuntime Attibuteชื่อunselectedItemTintColorสำหรับสีที่ต้องการของไอคอน Unselectedบนแถบแท็บ

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

แก้ไข: ทำงานกับ Xcode 8/10 สำหรับ iOS 10/12 ขึ้นไป


6
ขอบคุณมาก. unselectedItemTintColor พบว่าหายากมาก
Rushi trivedi

4
'unselectedItemTintColor' เป็นโซลูชั่นที่สมบูรณ์แบบสำหรับฉันขอบคุณ
fozoglu

สิ่งนี้จะทำงานหากเป้าหมายการปรับใช้เป็น 8.0 หรือ 9.0 หรือไม่ ฉันใช้ swift 3.0 และ Xcode 8.0 เพื่อการพัฒนา
Mamta

2
สิ่งสำคัญในการเลือกแถบ Tab นั้นใช้ได้กับ Swift 4 จริงๆสำหรับฉัน
Cons Bulaquena

2
ยอดเยี่ยม ยังคงทำงานใน Xcode 10 :) ไม่รีเฟรชบรรณาธิการภาพ แต่ทำงานครั้งเดียวที่รวบรวม :)
Mihail Minkov

64

ใน 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


3
ดูเหมือนว่าไม่มีวิธีอื่นใดที่ใช้งานได้ (อีกแล้ว) วิธีนี้ใช้ได้!
เท็ดดี้

@ Jarrod ฉันถูกหลอกมานานเกือบ 1 ชั่วโมงคำตอบนี้ควรมีคะแนนเสียงมากกว่านี้ ขอบคุณ!
Lance Samaria

53

เมื่อวันที่Xcode8ฉันได้เปลี่ยนImageTintจากกระดานเรื่องราวและใช้งานได้ดี

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

ผลลัพธ์:

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


1
เมื่อใช้ภาพที่กำหนดเองนี่คือภาพที่ใช้ได้กับฉัน
Juanjo

1
นี่ควรเป็นคำตอบที่ยอมรับได้ ไม่จำเป็นต้องมีคุณสมบัติ runtime ซึ่งหมายความว่าสิ่งนี้จะทำงานในหน้าจอเปิดตัว
Chris Douglass

18

สวิฟท์ 3 | Xcode 10

หากคุณต้องการให้รายการแถบแท็บทั้งหมดมีสีเดียวกัน (เลือก & ไม่ได้เลือก) ...


ขั้นตอนที่ 1

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

สินทรัพย์ Xcode


ขั้นตอนที่ 2

ใช้โปรแกรมแก้ไขกระดานเรื่องราวเพื่อเปลี่ยนการตั้งค่าแถบแท็บดังนี้:

  • Set Tab Bar: Image Tintเป็นสีที่คุณต้องการให้ไอคอนที่เลือกไว้สืบทอด
  • ตั้งค่าTab Bar: Bar แต้มสีตามสีที่คุณต้องการให้แถบ tab เป็น
  • ตั้งค่ามุมมอง: แต้มสีตามที่คุณต้องการดูในเครื่องมือแก้ไขกระดานเรื่องราวซึ่งจะไม่ส่งผลกระทบต่อสีของไอคอนเมื่อแอพของคุณทำงาน

Xcode Storyboard Editor


ขั้นตอนที่ 3

ขั้นตอนที่ 1 & 2 จะเปลี่ยนสีสำหรับไอคอนที่เลือก หากคุณยังต้องการเปลี่ยนสีของรายการที่ไม่ได้เลือกคุณจะต้องทำในรหัส ฉันไม่พบวิธีที่จะทำผ่านตัวแก้ไขกระดานเรื่องราว

สร้างคลาสตัวควบคุมแถบของแท็บที่กำหนดเอง ...

//  TabBarController.swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

... และกำหนดคลาสที่กำหนดเองให้กับตัวควบคุมฉากของแถบแท็บ

Xcode Storyboard Editor


หากคุณทราบวิธีเปลี่ยนสีไอคอนที่ไม่ได้เลือกผ่านตัวแก้ไขกระดานเรื่องราวโปรดแจ้งให้เราทราบ ขอบคุณ!


self.tabBar.unselectedItemTintColor = UIColor.white self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1) ทำงานให้ฉัน
Wahab Khan Jadon

9

ใส่รหัสนี้ใน viewDidLoad ของตัวควบคุมมุมมองที่คุณต้องการเปลี่ยนสีของ

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

1
ไม่มีวิธีการเปลี่ยนแปลงแท็บทั้งหมดหรือไม่
Deekor

เพียงแค่ใส่รหัสที่มีสีเดียวกันในมุมมองที่โหลดแท็บทั้งหมดของคุณ
Nick

คุณสามารถใช้รหัสนี้ได้ทันทีหลังจากที่คุณสร้าง UITabController มันจะตั้งค่าสีที่คุณกล่าวถึงสำหรับรายการแท็บทั้งหมดที่เลือกไว้
Jerrin

ไม่มีวิธีดังกล่าว setSelectedImageTintColor
Madhu Avinash

8

นอกจากนี้คุณยังสามารถตั้งค่าแถบสีของภาพที่เลือกโดยเส้นทางหลัก

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

หวังว่านี่จะช่วยคุณได้ !! ขอบคุณ


ใน iOS 9 จะไม่เปลี่ยนสีที่ไม่ได้เลือก
Saeed Rahmatolahi

สิ่งนั้นจะช่วยในการเปลี่ยนสีของไอคอน UITabBar ได้อย่างไร
Madhu Avinash

7

XCode 8.2, iOS 10, Swift 3: ตอนนี้มีunselectedItemTintColorแอตทริบิวต์สำหรับtabBar:

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

6

คุณสามารถเปลี่ยนสี UITabBarItem ได้โดยกระดานเรื่องราว แต่ถ้าคุณต้องการเปลี่ยนสีด้วยรหัสมันง่ายมาก:

// ใช้สำหรับเปลี่ยนสีของแถบที่เลือก

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

// นี่สำหรับการเปลี่ยนแปลงแถบที่ไม่ได้เลือก (iOS 10)

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

// และบรรทัดนี้สำหรับเปลี่ยนสีของ tabbar ทั้งหมด

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

setUnselectedItemTintColor สำหรับ iOS 10 เท่านั้น
ondermerol

5

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

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

5

เพิ่มรหัสนี้ในแอปผู้รับมอบสิทธิ์ของคุณ -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 ของสีที่ต้องการ


4

นี่คือโซลูชันใน Swift 3 ที่ทำงานบน iOS 10:

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

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

ข้อเสียเพียงอย่างเดียวของวิธีนี้คือภาพสินค้าของคุณจะต้องมีสีที่คุณต้องการ


ซับซ้อน. คำตอบของ Jarrod ทำงานได้ดีกับไอคอนทั้งหมด
Jose Ramirez


2

คุณสามารถ subclass UITabBarControllerและแทนที่ด้วยมันในกระดานเรื่องราว ในviewDidLoadการใช้งาน subclass ของคุณเรียกสิ่งนี้:

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

ได้รับ:'UITabBar' does not have a member named 'setSelectedImageTintColor'
Deekor

นอกจากนี้ฉันใช้อย่างรวดเร็วดังนั้นฉันใส่: self.tabBar.setSelectedImageTintColor = UIColor.greenColorไม่แน่ใจว่าถูกต้องหรือไม่
Deekor

2
@ ดูมันtintColorไม่selectedImageTintColorbtw selectedImageTintColorเลิกใช้แล้วใน iOS 8
chancyWu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.