2011-08-21 24 views

Trả lời

6
[[UITabBar appearance] setSelectionIndicatorImage:[UIImage {anImage}]] 

này có hiệu lực thi hành trên tất cả các thanh tabbar bạn sử dụng (ngay cả những subclassed)

Nếu bạn sử dụng một hình ảnh ở đây có màu sắc tương tự như nền thanh tabbar của bạn, bạn sẽ không thấy một chỉ báo.

Có thể bạn thậm chí có thể sử dụng hình ảnh trong suốt đầy đủ hoặc hình ảnh có kích thước 1px * 1px.

+2

Sử dụng http://ioscodesnippet.tumblr.com/post/9247898208/creating -a-placeholder-uiimage-động-với-màu sắc để tạo ra hình ảnh rõ ràng. Hoạt động tuyệt vời. – nh32rg

5

Trong trường hợp nếu bạn đang tùy chỉnh các mục trong tab tab có hình ảnh tùy chỉnh, bạn có thể làm như vậy. Tôi đã tùy chỉnh các mục tab tab bằng cách thêm hình nền vào thanh tab với tất cả các tab được vẽ, một tab ở trạng thái đã chọn và các tab khác ở trạng thái không được chọn. Trong mỗi didSelectViewController tôi thay đổi hình nền. Hơn nữa, tôi mang chế độ xem hình nền lên phía trước và thêm nhãn tùy chỉnh với tiêu đề cần thiết.

Kết quả: Tôi có thanh tab tùy chỉnh không có hiệu ứng bóng. Thú vị là UITabBarButtons nằm dưới hình nền, nhưng vẫn có thể chọn được.

Mã này là một cái gì đó như thế:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    [self customizeTabBar]; 
} 

- (void)customizeTabBar { 

    NSString *imageName = [NSString stringWithFormat:@"tabbg%i.png", tabBarCtrl.selectedIndex + 1]; 

    for(UIView *view in tabBarCtrl.tabBar.subviews) { 
     if([view isKindOfClass:[UIImageView class]]) { 
      [view removeFromSuperview]; 
     } 
    } 
    UIImageView *background = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]] autorelease]; 
    [tabBarCtrl.tabBar insertSubview:background atIndex:0]; 
    [tabBarCtrl.tabBar bringSubviewToFront:background]; 
     //if needed, here must be adding UILabels with titles, I didn't need it. 

} 

Có lẽ bạn sẽ quan tâm về vấn đề này :)

+0

Tôi nên thêm mã này ở đâu? – chatur

+2

trong đó UIViewController , đang triển khai ủy quyền của thanh điều khiển thanh tab của bạn. Bạn cần hình ảnh cho toàn bộ thanh tab bảng cho mỗi mục tab tab, đại diện cho hình ảnh mục hiện tại trong trạng thái được chọn, và khác trong trạng thái mặc định. Theo chỉ mục tab đã chọn, nền được thay thế bằng - (void) customizeTabBar – Mitya

+0

Cảm ơn rất nhiều Mitya .. !! – chatur

60
[[UITabBar appearance] setSelectionIndicatorImage:[[UIImage alloc] init]]; 

trình như một say mê!

+3

Ai đó nên đánh dấu điều này là chính xác .. <3 –

+0

Câu trả lời xuất sắc, nhưng lưu ý rằng điều này sẽ ảnh hưởng đến TẤT CẢ UITabBars, thậm chí cả những người là lớp con. –

1

Theo Apple's Tài liệu bạn có thể thực hiện:

(void)setFinishedSelectedImage: 
     (UIImage *)selectedImage withFinishedUnselectedImage: 
     (UIImage *)unselectedImage 

Đó là một phương pháp UITabBar

Here´s the link.

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