2012-05-24 24 views
6

Tôi đã thường xuyên UITabBar và thay đổi hình nền của nó thành hình ảnh tùy chỉnh có chiều cao thấp hơn, vì vậy tôi đã thay đổi height của frame. Lúc đầu, thứ tôi nhận được là một khoảng trống bên dưới thanh tab. vì vậy tôi đã thay đổi origin của số frame. Nhưng bây giờ không gian trống đã di chuyển lên phía trên thanh tab và đây là kết quả:Khoảng cách giữa tùy chỉnh UITabBar và ViewController

space above tab bar

Và đây là mã khai báo thanh tab trong appdelegate:

self.tabContoller = [[UITabBarController alloc] init]; 
//customizing the tabbar 
UIImage * tabBackgroundImage = [UIImage imageNamed:@"tabBarBg.png"]; 
self.tabContoller.tabBar.backgroundColor = [UIColor colorWithRed:245.f/255.f green:245.f/255.f blue:245.f/255.f alpha:255.f/255.f]; 
self.tabContoller.tabBar.backgroundImage = tabBackgroundImage; 
//setting the tabbar height to the correct height of the image 
CGRect tabR = self.tabContoller.tabBar.frame; 
CGFloat diff = tabR.size.height - tabBackgroundImage.size.height; 
tabR.size.height = tabBackgroundImage.size.height; 
tabR.origin.y += diff; 
self.tabContoller.tabBar.frame = tabR; 

Tôi đoán rằng vấn đề là bản vẽ của ViewController s nằm trên một không gian cố định, đó là chiều cao của thanh tab thông thường. Có cách nào để thay đổi nó không?

+0

Hãy thử chỉ bằng cách tăng 'chiều cao' của' chế độ xem' của chế độ xem. Nếu bạn không thể tạo thành xib, hãy làm theo cách thủ công trong 'viewDidLoad'. – Mat

+0

Điều đó không có tác dụng, tôi thậm chí đã thử đặt nó trong 'viewWillAppear' và' viewDidAppear'. nó không có hiệu lực. – Nadavrbn

Trả lời

7

Thay đổi subviews của UITabBarController của bạn vào một khung cỡ lớn, điều này đã làm việc cho tôi:

[[yourTabBarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 480)]; 
+0

Bạn là một phao cứu sinh cảm ơn bạn rất nhiều! – Nadavrbn

+0

Cảm ơn bạn rất nhiều! –

+0

Điều này không hoạt động trong iOS7, có vẻ như có thứ gì đó bị bỏ lại phía sau. Hình chữ nhật màu đen biến mất, nhưng bây giờ có một đường viền màu xám mà nó từng là ... – ryan0

0

Nếu thay đổi khung như @JoaT được đề cập không hoạt động, hãy đảm bảo chế độ xem của bộ điều khiển chế độ xem có bộ mặt nạ tự động hóa chính xác.

Liên kết này SO có thể hữu ích.

+0

Tôi đã thử 'UIViewAutoresizingFlexibleHeight' và' UIViewAutoresizingFlexibleBottomMargin' và không nhận được kết quả nào. Tôi cũng thiết lập các thuộc tính đó: 'self.tabContoller.tabBar.autoresizesSubviews = YES;' và 'self.tabContoller.view.autoresizesSubviews = YES;' và nó không giúp ích gì. Tôi có nên đặt nó ở bất cứ nơi nào khác không? – Nadavrbn

+0

Bạn đã thử in ra khung và kích thước giới hạn của thanh tab sau khi bộ điều khiển xem đầu tiên xuất hiện chưa? Có lẽ nó không phải là những gì chúng tôi mong đợi nó được sau khi thiết lập nó trong các đại biểu ứng dụng. – Mike

0

Tôi đã thử bằng cách thay đổi chiều cao và nguồn gốc của tabbar, đối với tôi, nó hoạt động đúng cách. Bạn có thể thử bằng cách tăng chiều cao của bộ điều khiển chế độ xem.

7

Hãy thử tạo lớp riêng bạn kéo dài từ UITabBar và sử dụng chức năng này:

- (CGSize)sizeThatFits:(CGSize)size { 
    CGSize auxSize = size; 
    auxSize.height = 54; // Put here the new height you want and that's it 
    return auxSize; 
} 

Điều này sẽ thay đổi kích thước UITabBar với kích thước bạn muốn. Đơn giản và dễ dàng.

+0

Tôi ngạc nhiên khi tôi mất quá nhiều thời gian để tìm câu trả lời này. Nó nên được upvoted hơn. Đây thực sự là cách dễ nhất để làm những điều thú vị cho một UITabBar. Cảm ơn bạn. –

+0

Tôi rất vui vì nó phù hợp với bạn. Không có chi. – crisisGriega

+0

Đây là cách duy nhất tôi có thể có được chiều cao tùy chỉnh trên UITabBar. Cảm ơn bạn. –

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