2013-09-24 76 views
7

Hiện tại tôi đang sử dụng Xcode 5 để phát triển ứng dụng định hướng danh sách. Tôi có màu tùy chỉnh cho thanh tab, hình ảnh tùy chỉnh cho các biểu tượng tab, màu tùy chỉnh cho hình ảnh biểu tượng của thanh tab khi được chọn, nhưng tôi không thể tìm cách tùy chỉnh màu của hình ảnh biểu tượng khi không chọn. Ngay bây giờ nó chỉ là màu xám mặc định mà bạn hầu như không thể nhìn thấy trái ngược với thanh tab màu xanh lá cây của tôi. Tôi muốn làm cho hình ảnh và tên của biểu tượng trên thanh tab màu trắng.Màu biểu tượng thanh tab tùy chỉnh

Có ai biết cách đặt màu sắc của biểu tượng trên thanh tab trong Xcode 5 không?

Trả lời

17

Bạn có thể thử này để màu được lựa chọn biểu tượng:

// Custom the tab bar 
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]]; 

và điều này để nhuộm màu không biểu tượng tích cực:

[self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"item_seleted.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"item_unselected.png"]]; 
+2

Lưu ý rằng setFinisheSelectedImage: withFinishedUnselectedImage bị phản đối trong iOS 7. –

+0

Matthew nếu bị phản đối của nó trong iOS 7 là có một cách khác để đi về việc này hoặc là chỉ vì táo muốn giữ các biểu tượng mặc định màu xám tiêu chuẩn? – ian

+0

@ user2792129 - vâng, chỉ mất vài phút để nhận được câu trả lời của tôi được nhập trong

26

Bạn cần phải thiết lập các chế độ dựng hình cho (không được chọn) hình ảnh của mỗi tab đến UIImageRenderingModeAlwaysOriginal. Vì vậy, trong đại biểu ứng dụng của bạn, hãy tham khảo thanh tab và sau đó lặp qua từng mục trên thanh tab, điều chỉnh các chế độ hình ảnh.

Có lẽ một cách tốt hơn để có được một tài liệu tham khảo để thanh tab, nhưng tôi đã làm như sau:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UITabBarController *tbc = [sb instantiateInitialViewController]; 
self.window.rootViewController = tbc; 
UITabBar *tb = tbc.tabBar; 

Sau đó, việc điều chỉnh hình ảnh có thể được thực hiện như sau:

NSArray *items = tb.items; 

for (UITabBarItem *tbi in items) { 
    UIImage *image = tbi.image; 
    tbi.selectedImage = image; 
    tbi.image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
} 
+0

Cảm ơn Matthew. Tôi đặt mã đó vào ủy nhiệm ứng dụng .m của tôi và nó trả về một vấn đề cho biết "cấu hình không được hỗ trợ" "Kiểu đồng bằng không được hỗ trợ trong một mục điều hướng, Main.storyboard." – ian

+0

Mã của tôi giả định rằng bộ điều khiển thanh tab là bộ điều khiển chế độ xem ban đầu trong bảng phân cảnh. Nếu ứng dụng của bạn được thiết lập khác, đó có thể là nguồn gốc của sự cố. –

+0

Tác phẩm này chỉ hoạt động nhưng chỉ dành cho một trong các hình ảnh. Về cơ bản tôi có một biểu tượng chưa được chọn và được chọn. Bí quyết này đã làm cho công việc không được chọn nhưng được chọn vẫn chỉ là một mớ hỗn độn màu xanh. – Halsafar

5

Hãy thử điều này way..it đã hoạt động cho tôi

Trong ứng dụng đại biểu

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 


UITabBarController *tabBarController=(UITabBarController*)(self.window.rootViewController); 
    UITabBar *tabBar=tabBarController.tabBar; 
    UITabBarItem *tabBarItem1=[[tabBar items] objectAtIndex:0];//first tab bar 
[tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"yourImageSelected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"yourImageUnselected.png"]];//image should be 30 by 30 
} 

chạy và đi

4

Đặt tab tùy chỉnh với hình ảnh đã chọn và không được chọn. Cũng có vị trí tabbarItem Hình ảnh Insets ở giữa

UITabBar *tabBar = self.tabBarController.tabBar; 

UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; 
UITabBarItem *item1 = [tabBar.items objectAtIndex:1]; 
UITabBarItem *item2 = [tabBar.items objectAtIndex:2]; 
UITabBarItem *item3 = [tabBar.items objectAtIndex:3]; 

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"iconGray.png"] ]; 
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue2.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon-2.png"]]; 
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue3.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon-3.png"]]; 
[item3 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue4.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon-4.png"]]; 

item0.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); 
item1.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); 
item2.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); 
item3.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); 

** Trong chế độ xemWillAppear phương pháp xem bộ điều khiển đầu tiên. **

3

Vì setFinishedSelectedImage: withFinishedUnselectedImage bị phản đối, tôi đã sử dụng một phiên bản thay đổi câu trả lời Ram S bằng cách thay thế:

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"iconGray.png"] ]; 

với:

[item0 setImage:[[UIImage imageNamed:@"iconGray.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 
[item0 setSelectedImage:[[UIImage imageNamed:@"iconBlue.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 

Xem UITabBarItem setFinishedSelectedImage: deprecated in iOS7 để biết thêm thông tin.

+0

cảm ơn, bạn đã lưu hai ngày của tôi ... –

5

Nếu bạn có thanh tab trong trình chỉnh sửa trực quan, bạn có thể thực hiện tại đây. Chọn thanh tab và trong "User Defined Runtime Thuộc tính" thêm thuộc tính: Đường dẫn chính: selectedImageTintColor Loại: Màu Value:

+1

Giống như một sự quyến rũ. Có một phép thuật đẹp cho các biểu tượng không được chọn là tốt? –

6

Bạn có thể làm điều này hoàn toàn từ các kịch bản mà không cần viết bất kỳ mã bằng cách thêm một "User Defined Runtime Thuộc tính ":

  1. chọn UITabViewController của bạn trong storyboard
  2. mở 'Document Outline' và chắc chắn rằng bạn chọn 'Tab Bar' xem trong bối cảnh đó.
  3. Hiển thị "Trình kiểm tra danh tính". Bạn sẽ thấy một phần dành cho "User Defined Runtime Thuộc tính"
  4. Thêm dòng sau:
    • Đường dẫn chính: tintColor
    • Loại: Màu
    • Value: Chọn màu mà bạn muốn.
+2

Điều cần biết. Nhưng Thuộc tính thời gian chạy do người dùng xác định là một cơn ác mộng gỡ lỗi tuyệt đối. –

+1

Còn gì khác ngoài tintColor bạn có thể nhập vào Đường dẫn chính? –

+1

@RasmusBidstrup, tất cả các thuộc tính liên quan của mục IB đã chọn. Trong trường hợp của chúng tôi là UITabBar. Vì vậy, đi đến tài liệu táo và đọc tài liệu UITabBar. – OhadM

Các vấn đề liên quan