2012-05-21 6 views
5

tôi đã tạo ra một thanh tabbar tùy chỉnh đơn giản bằng cách thiết lập những hình ảnh của từng hạng mục, như sau:Thiết lập chiều cao của UITabBar

UITabBar *tabBar = self.tabBarController.tabBar; 
UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; 
UITabBarItem *item1 = [tabBar.items objectAtIndex:1]; 
UITabBarItem *item2 = [tabBar.items objectAtIndex:2]; 

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"activity_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"activity.png"]]; 
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"agenda_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"agenda.png"]]; 
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"settings_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"settings.png"]]; 

Trong khi các công trình này tuyệt vời, tôi nhận thấy rằng có một khoảng trống màu đen dưới của tôi thanh tabbar

enter image description here

hình ảnh của tôi được 44px về chiều cao, nhưng tôi nghĩ rằng tôi phải bằng cách nào đó thay đổi chiều cao của thanh tabbar tôi.

Trả lời

0

định sử dụng -

tabBar.frame=CGRectMake(x,y,w,h); 

Bằng cách này bạn có thể đặt xCord, yCord, chiều rộng và chiều cao.

+0

Cảm ơn, nhưng kỳ lạ khi tôi đặt y để self.window.frame.size.height, nó vẫn có thể nhìn thấy một vài px. Tương tự khi tôi sử dụng [tabBar setFrame: CGRectMake (0.0f, self.window.frame.size.height - 44, self.window.frame.size.width, 44.0f)] ;, Tôi vẫn có thể thấy nổi bật của tab được chọn trong gab đen bên dưới nó –

+0

bạn cần phải đăng nhập các giá trị y và kiểm tra xem bạn có nhận được các giá trị này chính xác không? – rishi

+0

self.window.frame.size.height: 480, taBar.frame.origin.y: 436, tabBar.frame.size.heigh: 44. Khi tôi chụp ảnh màn hình và kiểm tra trong photoshop, thanh tab chỉ ở 428px trên trục y. –

2

TabBar chính nó là 49px và được hiển thị bằng màu đen phía sau hình ảnh của bạn (có thể là [UITabBar layoutSubviews]). Sau đó, hình ảnh của bạn được hiển thị ở trên cùng. Lý do bù đắp là vì những hình ảnh bạn cung cấp quá lớn, UITabBar mong đợi các biểu tượng 30x30px, không phải là hình ảnh của toàn bộ UITabBarItem.

Dưới đây là một vài điều để thử:

  1. Cung cấp chỉ là một biểu tượng 30x30px, thay vì toàn bộ nút tab
  2. Sau khi bạn thiết lập hình ảnh của bạn vào mục tab, hãy thử này: [item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)]; // play with insets until it renders correctly
  3. UITabBar của lớp con và ghi đè layoutSubviews để gọi đầu tiên super, sau đó đặt lại vị trí hình ảnh của bạn theo ý muốn. Không được đề xuất, nó có thể phá vỡ trong các phiên bản iOS trong tương lai.
+0

Tùy chọn tuyệt vời 2 đã thực hiện thủ thuật cho tôi. Cảm ơn bạn :) – SuperKevin

0

Kiểm tra này:

[self.tabBar setFrame:CGRectMake(self.tabBar.frame.origin.x, self.tabBar.frame.origin.y - 30, self.tabBar.frame.size.width, self.tabBar.frame.size.height + 30)]; 
+1

Tính năng này hoạt động cho đến khi bạn chọn một mục từ thanh tab và sau đó đặt lại. Làm thế nào để bạn giải quyết điều đó? –