2009-04-26 16 views

Trả lời

4

SDK không thực hiện việc này dễ dàng, nhưng có thể là về mặt kỹ thuật. Apple dường như tin rằng đây là một phần trong tầm nhìn của họ về một cái nhìn và cảm nhận nhất quán.

UITabBar là một phân lớp của UIView. Bạn luôn có thể phân loại và triển khai -drawRect:

Đây không phải là một nhiệm vụ tầm thường, tuy nhiên, bạn phải chủ yếu triển khai lại lớp học từ đầu hoặc bạn có thể gặp phải một số tác dụng phụ lạ.

1

iOS 5.0 khắc phục sự cố này nhưng giải pháp là theo NDA. Tra cứu UITabBar trong tài liệu của bạn để có một cách DỄ DÀNG để làm những gì bạn muốn làm.

18

Trong IOS5, UITabBar có thuộc tính selectedImageTintColor thực hiện những gì bạn cần.

+4

Không được chấp nhận trong iOS 8. – KPM

+1

@KPM, tôi thấy nó không được dùng nữa, nhưng thay vào đó chúng ta nên sử dụng cái gì? Điều này vẫn đang hoạt động trên iOS 8, cho những gì nó có giá trị. –

+1

Xem câu trả lời của kyle dưới đây. http://stackoverflow.com/a/18996564/364446 – KPM

11

Nó là vô cùng dễ dàng

Tạo một lớp tùy chỉnh của UITabBarController và trong -(void)viewDidLoad phương pháp thêm dòng này:

[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]]; 
+0

nhưng điều này sẽ thay đổi màu của Văn bản, không phải toàn bộ vùng chọn. Bất kỳ cách nào để đạt được điều đó? –

+3

Không được chấp nhận trong ios 8 – codercat

3

Tôi đã tìm kiếm một cách để thiết lập màu sắc văn bản được lựa chọn một UITabBarItem và đã tìm thấy một phương thức đơn giản đã chết, sử dụng giao thức UIAppearance.

[UITabBarItem.appearance setTitleTextAttributes:@{ 
     UITextAttributeTextColor : [UIColor greenColor] } forState:UIControlStateNormal]; 

[UITabBarItem.appearance setTitleTextAttributes:@{ 
     UITextAttributeTextColor : [UIColor purpleColor] }  forState:UIControlStateSelected]; 

Hãy tha thứ cho những màu sắc khủng khiếp!

+0

UITextAttributeTextColor không được chấp nhận. whats thay thế? –

+0

Tôi nghĩ rằng đó là NSForegroundColorAttributeName –

+0

Cảm ơn ... u r a thiên tài .. –

14

Trong iOS 7, nó chỉ đơn giản là màu tintColor. Một cách để thực hiện điều này có thể là để phân lớp UITabBarViewController, thiết lập các lớp tùy chỉnh trong kịch bản, và trong phương pháp viewDidLoad bạn của tabBarVC subclassed thêm này:

[[self tabBar] setTintColor:[UIColor redColor]]; 
+1

Tôi liên tục như bản thân mình: "Tại sao tôi phải tạo một phân lớp cho một thứ nhỏ như thay đổi màu sắc?". Câu hỏi hay, tại sao f * không tự động thừa kế tintColor từ chế độ xem gốc? Và tại sao cài đặt trình tạo giao diện không làm gì? –

+0

Cách sử dụng SelectedImageTintColor trong ios 8 – codercat

+1

[tự.tabBarController.tabBar setTintColor: [UIColor redColor]]; cũng sẽ làm các trick. –

5

Vì UITextAttributeTextColor bị phản đối trong iOS 7, bạn nên sử dụng:

[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal];  
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected]; 
+0

Điều này hoạt động giống như nét duyên dáng trong iOS 8 và 9. – AndyH

49

cập nhật tháng 9 năm 2017: đã hai năm kể từ khi tôi đã viết câu trả lời này và kể từ khi nó nhận upvotes thường xuyên, tôi có nên nói điều này có lẽ là câu trả lời tồi tệ nhất có thể cho câu hỏi này, nó dễ gây lỗi, li kely để phá vỡ vì bản cập nhật iOS, khó gỡ lỗi, vv, vì vậy xin vui lòng không làm những điều tôi đã viết và áp dụng các giải pháp tốt hơn như subclassing UITabBar hoặc UITabBarController. Cảm ơn.

Bạn có thể thực hiện việc này bằng cách đặt thuộc tính "tintColor" (Đường dẫn chính) cho bạn UITabBar.

  1. Chọn UITabBar trong đường viền tài liệu. (KHÔNG Bộ điều khiển có biểu tượng màu vàng.)
  2. Chọn Trình kiểm tra nhận dạng trong khu vực Tiện ích.
  3. Nhấp vào dấu + trong "Thuộc tính thời gian chạy do người dùng xác định".
  4. Thêm Đường dẫn khóa "tintColor" loại "Màu" và màu bạn muốn.

Điều này sẽ thực hiện. Bạn có thể kiểm tra nó với ảnh chụp màn hình bên dưới.

enter image description here

Thông tin thêm về điều này: Có một "Tint" thuộc tính trong Identity Thanh tra UITabBar mà tôi tin rằng sẽ làm chính xác những điều tương tự, nhưng rõ ràng, nó không làm gì. Đó là giá trị mặc định là màu tô mặc định chính xác khi một UITabBarItem được chọn, do đó, tôi đoán là nó sẽ được cố định trong bản phát hành ổn định Xcode 7. Ngón tay vượt qua.

+0

bạn cũng có thể làm điều này trên xcode 6, câu trả lời hay, đây là giải pháp –

+0

trên iOS 8 là tốt ... – Ankahathara

+0

có vẻ như điều này vẫn không cố định trong phiên bản chính thức của xcode 7 - câu trả lời này đã cứu tôi một số nhức đầu, cảm ơn bạn! –

2

Bắt đầu từ iOS 8 nó đơn giản như:

UITabBar.appearance().tintColor = UIColor.redColor() 
4

Đơn giản chỉ cần thay đổi thuộc tính sau đây trong Interface Builder cho TabBar

Rõ ràng trong trường hợp của tôi trắng của nó.

1

enter image description here

Để đạt được kết quả trên, hãy thực hiện các bước sau.

Bước 1: Thêm hình ảnh mong muốn của bạn trong Assets.xcassets, và chắc chắn rằng họ Render As: Default

enter image description here

Bước 2: Chọn đối tượng UITabBar của bạn và thiết lập Image Tint màu sắc, màu sắc này sẽ màu tab đã chọn

enter image description here

Bước 3: ChọnUITabBar đối tượng và thêm Đường dẫn chính: unselectedItemTintColor, Loại: Color, Value: Choose color for unselected item trong User Defined Runtime Thuộc tính.

enter image description here

Đã xong.