Thay đổi mục thanh tab được chọn màu trong bảng phân cảnh


175

Tôi muốn thay đổi các mục trên thanh tab của mình thành màu hồng khi được chọn thay vì màu xanh mặc định.

Làm cách nào tôi có thể thực hiện việc này bằng trình chỉnh sửa bảng phân cảnh trong Xcode 6?

Đây là cài đặt hiện tại của tôi không hoạt động, nền màu xanh hoạt động nhưng màu hồng không hoạt động:

nhập mô tả hình ảnh ở đây


Có thể trùng lặp tab-bar-item-tint-color !
Người dùng31

Kiểm tra câu trả lời này nó sẽ giúp bạn cho giải pháp: stackoverflow.com/a/58727092/7804300
Talha Ahmed

Câu trả lời:


408

Thêm thuộc tính Runtime Color có tên "tintColor" từ StoryBoard. Điều này đang hoạt động ( đối với Xcode 8 trở lên ).

nếu bạn muốn màu không được chọn .. bạn cũng có thể thêm unselectedItemTintColor.

thiết lập tintColor làm thuộc tính thời gian chạy


24
nó hoạt động với tôi khi tôi thêm thuộc tính này vào UITabBarItem chứ không phải UITabBar.
Sourabh86

1
Nhưng làm thế nào để bạn thiết lập mục thanh tab Màu không được chọn trong bảng phân cảnh?
Peter

1
Hoạt động hoàn hảo cho trường hợp của tôi - Tôi cần năm mục tabBar của mình là màu duy nhất khi được chọn. Tôi đã có thể đặt Thuộc tính Thời gian chạy này trên UITabBarItem, trên UINavigationControllerkết nối với tabBar của tôi và nó hoạt động hoàn hảo. Tất cả mà không cần viết bất kỳ mã nào là điều tuyệt vời, vì tôi đang sử dụng lại một lớp VC ba lần. Cảm ơn!
rosshump

7
ngược lại - đây là cách tiếp cận duy nhất hoạt động trên iOS 10 (tint từ bảng thuộc tính dường như không hoạt động và thuộc tính thời gian chạy "tintColor" của uitabbaritem cũng không hoạt động.
luky

5
StackOverflow 1: Apple 0
Sharukh Mastan

175

Giải pháp thanh lịch này hoạt động tuyệt vời trên SWIFT 3.0 , SWIFT 4.2SWIFT 5.1 :

Trên bảng phân cảnh:

  1. Chọn thanh tab của bạn
  2. Đặt Attibute Runtime được gọi là tintColor cho màu mong muốn của Biểu tượng được chọn trên thanh tab
  3. Đặt Attibute Runtime được gọi là unselectedItemTintColor cho màu mong muốn của Biểu tượng không được chọn trên thanh tab

nhập mô tả hình ảnh ở đây

Chỉnh sửa: Làm việc với Xcode 8/10, cho iOS 10/12 trở lên .


6
Cảm ơn rất nhiều.
unelectedItemTintColor

4
'unselectedItemTintColor' giải pháp hoàn hảo cho tôi cảm ơn.
fozoglu

Điều này sẽ hoạt động nếu mục tiêu triển khai là 8.0 hoặc 9.0? Tôi đã sử dụng swift 3.0 và Xcode 8.0 để phát triển
Mamta

2
Quan trọng là chọn thanh Tab, thực sự đã hoạt động trong Swift 4 đối với tôi.
Nhược điểm Bulaquena

2
Thông minh! Vẫn hoạt động trên xCode 10 :) không làm mới trình chỉnh sửa hình ảnh nhưng hoạt động một khi được biên dịch :)
Mihail Minkov

64

Trong Swift, sử dụng xcode 7 (và phiên bản mới hơn), bạn có thể thêm phần sau vào tệp AppDelegate.swift của mình:

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

Đây là những gì phương thức hoàn chỉnh trông như thế nào:

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
}

Trong ví dụ trên, mục của tôi sẽ có màu trắng. "/5555" là cần thiết bởi vì nó mong đợi một giá trị từ 0 đến 1. Đối với màu trắng, tôi có thể chỉ sử dụng 1. Nhưng đối với màu khác, có thể bạn sẽ sử dụng các giá trị RGB.


3
Dường như không có phương pháp nào khác hoạt động (nữa). Điều này hoạt động!
gấu bông

@Jarrod Tôi đã bị lừa với điều này trong gần 1 giờ, câu trả lời này sẽ có nhiều phiếu bầu hơn. Cảm ơn!
Lance Samaria

53

Trên Xcode8tôi đã thay đổi ImageTinttừ bảng phân cảnh và nó hoạt động tốt.

nhập mô tả hình ảnh ở đây

Kết quả:

nhập mô tả hình ảnh ở đây


1
Khi sử dụng hình ảnh tùy chỉnh ĐÂY LÀ hình ảnh phù hợp với tôi
Juanjo

1
Đây phải là câu trả lời được chấp nhận. Nó không yêu cầu thuộc tính thời gian chạy, có nghĩa là nó hoạt động trong màn hình Launch!
Chris Doulass

18

Swift 3 | Xcode 10

Nếu bạn muốn làm cho tất cả các mục trên thanh tab có cùng màu (được chọn & không được chọn) ...


Bước 1

Đảm bảo tài sản hình ảnh của bạn được thiết lập để Kết xuất dưới dạng = Hình ảnh mẫu . Điều này cho phép họ kế thừa màu sắc.

Tài sản Xcode


Bước 2

Sử dụng trình chỉnh sửa bảng phân cảnh để thay đổi cài đặt thanh tab của bạn như sau:

  • Đặt Tab Bar: Image Tint thành màu bạn muốn biểu tượng được chọn kế thừa.
  • Đặt Tab Tab: Bar Tint thành màu bạn muốn thanh tab.
  • Đặt Chế độ xem: Tô màu theo màu bạn muốn thấy trong trình chỉnh sửa bảng phân cảnh, điều này không ảnh hưởng đến màu biểu tượng khi ứng dụng của bạn chạy.

Trình chỉnh sửa bảng phân cảnh Xcode


Bước 3

Bước 1 & 2 sẽ thay đổi màu cho biểu tượng đã chọn. Nếu bạn vẫn muốn thay đổi màu của các mục không được chọn, bạn cần thực hiện theo mã. Tôi đã không tìm thấy một cách để làm điều đó thông qua trình soạn thảo bảng phân cảnh.

Tạo một lớp trình điều khiển thanh tab tùy chỉnh ...

//  TabBarController.swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

... và gán lớp tùy chỉnh cho bộ điều khiển cảnh thanh tab của bạn.

Trình chỉnh sửa bảng phân cảnh Xcode


Nếu bạn tìm ra cách thay đổi màu biểu tượng không được chọn thông qua trình chỉnh sửa bảng phân cảnh, vui lòng cho tôi biết. Cảm ơn!


self.tabBar.unselectedItemTintColor = UIColor.white self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1) Làm việc cho tôi
Wahab Khan Jadon

9

đặt mã này vào viewDidLoad của trình điều khiển khung nhìn mà bạn muốn thay đổi màu của

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

1
Có cách nào để thay đổi cho tất cả các tab không?
Deekor

Chỉ cần đặt mã có cùng màu trong chế độ xem đã tải tất cả các tab của bạn
Nick

bạn có thể sử dụng mã này ngay sau khi bạn tạo UITabContoder, nó sẽ đặt màu bạn đã đề cập cho tất cả các mục tab khi chọn.
Jerrin 8/12/2015

Không có phương thức nào được đặtSelectedImageTintColor
Madhu Avinash

8

Bạn cũng có thể đặt màu sắc thanh hình ảnh được chọn theo đường dẫn chính:

nhập mô tả hình ảnh ở đây

Hy vọng điều này sẽ giúp bạn!! Cảm ơn


trong iOS 9, nó không thay đổi màu không được chọn
Saeed Rahmatolahi

Làm thế nào điều đó sẽ giúp thay đổi màu sắc của biểu tượng UITabBar?
Madhu Avinash

7

XCode 8.2, iOS 10, Swift 3: hiện có một unselectedItemTintColorthuộc tính cho tabBar:

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

6

Bạn có thể thay đổi màu sắc UITabBarItem theo bảng phân cảnh nhưng nếu bạn muốn thay đổi màu sắc bằng mã thì rất dễ dàng:

// Sử dụng cái này để thay đổi màu của thanh được chọn

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

// Điều này để thay đổi thanh không được chọn (iOS 10)

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

// Và dòng này để thay đổi màu của tất cả các thanh tab

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

setUnselectedItemTintColor chỉ dành cho iOS 10
ondermerol

5

Bằng cách nào đó, chúng tôi không thể thay đổi Tab Tab đã chọn mục Màu sắc bằng cách sử dụng bảng phân cảnh, do đó tôi đã thêm mã bên dưới trong ViewDidLoad của mình, hy vọng điều này sẽ giúp ích.

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

5

Thêm mã này vào chức năng ủy nhiệm -did_finish_launching_with_options của ứng dụng của bạn

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

Đặt RGB của màu yêu cầu


4

Đây là giải pháp trong Swift 3 hoạt động trong iOS 10:

Đầu tiên, bạn tạo lớp con của trình điều khiển thanh tab của riêng bạn và thêm nó vào trình điều khiển tab trong bảng phân cảnh của bạn. Trong viewDidLoad()phương thức bạn có thể tùy chỉnh thanh tab. Cần phải nói rõ ở đây rằng tintColorthuộc tính của tabBarđại diện cho màu của mục được chọn không phải là màu của những mục không được chọn! Để thay đổi màu của các mục không được chọn, tôi khuyên bạn nên lặp qua từng mục và sử dụng màu gốc của hình ảnh để chúng không tự động được hiển thị dưới dạng màu xám.

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

Nhược điểm duy nhất với phương pháp này là hình ảnh vật phẩm của bạn phải có màu sắc mong muốn mà bạn hướng tới.


Phức tạp. Câu trả lời của Jarrod hoạt động tốt với tất cả các biểu tượng.
Jose Ramirez

4

Cách tốt nhất là thay đổi Image Tinttrong bảng phân cảnh


2

Bạn có thể phân lớp UITabBarControllervà thay thế nó bằng bảng phân cảnh. Trong viewDidLoadquá trình thực hiện của bạn, hãy gọi lớp con này:

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

nhận:'UITabBar' does not have a member named 'setSelectedImageTintColor'
Deekor

Ngoài ra tôi đang sử dụng swift nên tôi đặt: self.tabBar.setSelectedImageTintColor = UIColor.greenColorkhông chắc điều đó có đúng hay không
Deekor

2
@Deekor thì tintColorkhông selectedImageTintColor, btw selectedImageTintColorkhông được dùng nữa trong iOS 8.
chancyWu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.