ฉันต้องการเปลี่ยนรายการในแถบแท็บเป็นสีชมพูเมื่อเลือกแทนสีน้ำเงินเริ่มต้น
ฉันจะทำสิ่งนี้ให้สำเร็จได้อย่างไรโดยใช้เครื่องมือแก้ไขสตอรีบอร์ดใน Xcode 6
นี่คือการตั้งค่าปัจจุบันของฉันซึ่งไม่ทำงานพื้นหลังสีน้ำเงินใช้งานได้ แต่สีชมพูไม่ทำงาน:
ฉันต้องการเปลี่ยนรายการในแถบแท็บเป็นสีชมพูเมื่อเลือกแทนสีน้ำเงินเริ่มต้น
ฉันจะทำสิ่งนี้ให้สำเร็จได้อย่างไรโดยใช้เครื่องมือแก้ไขสตอรีบอร์ดใน Xcode 6
นี่คือการตั้งค่าปัจจุบันของฉันซึ่งไม่ทำงานพื้นหลังสีน้ำเงินใช้งานได้ แต่สีชมพูไม่ทำงาน:
คำตอบ:
เพิ่มคุณสมบัติ Runtime Color ชื่อ "tintColor" จาก StoryBoard สิ่งนี้ใช้งานได้ ( สำหรับ Xcode 8 ขึ้นไป )
ถ้าคุณต้องการสีที่ไม่ได้เลือก .. คุณก็สามารถเพิ่มได้unselectedItemTintColor
เช่นกัน
UITabBarItem
บนที่UINavigationController
เชื่อมต่อกับ tabBar ของฉันและทำงานได้อย่างไม่มีที่ติ ทั้งหมดโดยไม่ต้องเขียนโค้ดใด ๆ ด้วยซึ่งยอดเยี่ยมเพราะฉันใช้คลาส VC ซ้ำสามครั้ง ขอบคุณ!
โซลูชันที่สวยงามนี้ใช้งานได้ดีกับSWIFT 3.0 , SWIFT 4.2และSWIFT 5.1 :
บนกระดานเรื่องราว:
แก้ไข: ทำงานกับ Xcode 8/10 สำหรับ iOS 10/12 ขึ้นไป
ใน 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 | Xcode 10
หากคุณต้องการให้รายการแถบแท็บทั้งหมดมีสีเดียวกัน (เลือก & ไม่ได้เลือก) ...
ขั้นตอนที่ 1
ตรวจสอบให้แน่ใจสินทรัพย์ภาพของคุณมีการติดตั้งการRender ในฐานะที่เป็นแม่แบบภาพ สิ่งนี้ช่วยให้พวกเขาสืบทอดสี
ขั้นตอนที่ 2
ใช้โปรแกรมแก้ไขกระดานเรื่องราวเพื่อเปลี่ยนการตั้งค่าแถบแท็บดังนี้:
ขั้นตอนที่ 3
ขั้นตอนที่ 1 & 2 จะเปลี่ยนสีสำหรับไอคอนที่เลือก หากคุณยังต้องการเปลี่ยนสีของรายการที่ไม่ได้เลือกคุณจะต้องทำในรหัส ฉันไม่พบวิธีที่จะทำผ่านตัวแก้ไขกระดานเรื่องราว
สร้างคลาสตัวควบคุมแถบของแท็บที่กำหนดเอง ...
// TabBarController.swift
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// make unselected icons white
self.tabBar.unselectedItemTintColor = UIColor.white
}
}
... และกำหนดคลาสที่กำหนดเองให้กับตัวควบคุมฉากของแถบแท็บ
หากคุณทราบวิธีเปลี่ยนสีไอคอนที่ไม่ได้เลือกผ่านตัวแก้ไขกระดานเรื่องราวโปรดแจ้งให้เราทราบ ขอบคุณ!
self.tabBar.unselectedItemTintColor = UIColor.white
self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1)
ทำงานให้ฉัน
ใส่รหัสนี้ใน viewDidLoad ของตัวควบคุมมุมมองที่คุณต้องการเปลี่ยนสีของ
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
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)
คุณสามารถเปลี่ยนสี UITabBarItem ได้โดยกระดานเรื่องราว แต่ถ้าคุณต้องการเปลี่ยนสีด้วยรหัสมันง่ายมาก:
// ใช้สำหรับเปลี่ยนสีของแถบที่เลือก
[[UITabBar appearance] setTintColor:[UIColor blueColor]];
// นี่สำหรับการเปลี่ยนแปลงแถบที่ไม่ได้เลือก (iOS 10)
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];
// และบรรทัดนี้สำหรับเปลี่ยนสีของ tabbar ทั้งหมด
[[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
อย่างใดเราไม่สามารถเปลี่ยนรายการที่เลือกแท็บบาร์สีอ่อนโดยใช้กระดานเรื่องราวเพียงอย่างเดียวดังนั้นฉันเพิ่มโค้ดด้านล่างใน ViewDidLoad ของฉันหวังว่าสิ่งนี้จะช่วยได้
[[UITabBar appearance] setTintColor:[UIColor whiteColor]];
เพิ่มรหัสนี้ในแอปผู้รับมอบสิทธิ์ของคุณ -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 ของสีที่ต้องการ
นี่คือโซลูชันใน 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 )
}
}
}
}
}
ข้อเสียเพียงอย่างเดียวของวิธีนี้คือภาพสินค้าของคุณจะต้องมีสีที่คุณต้องการ
วิธีที่ดีที่สุดคือเปลี่ยนImage Tint
กระดานเรื่องราว
คุณสามารถ subclass UITabBarController
และแทนที่ด้วยมันในกระดานเรื่องราว ในviewDidLoad
การใช้งาน subclass ของคุณเรียกสิ่งนี้:
[self.tabBar setTintColor:[UIColor greenColor]];
'UITabBar' does not have a member named 'setSelectedImageTintColor'
self.tabBar.setSelectedImageTintColor = UIColor.greenColor
ไม่แน่ใจว่าถูกต้องหรือไม่
tintColor
ไม่selectedImageTintColor
btw selectedImageTintColor
เลิกใช้แล้วใน iOS 8