2010-06-24 42 views
35

Tôi đang viết một ứng dụng sử dụng UITabBar cho các phần của điều hướng. Tôi cũng đang sử dụng UIScrollView để trình bày thêm thông tin so với những gì màn hình thường có thể xử lý. Bởi vì điều này, tôi cần phải đặt chế độ xem cuộn để tính đến chiều cao của UITabBar để tất cả thông tin được hiển thị.tính chiều cao của UITabBar

Có cách nào để tính height của số UITabBar không?

Trả lời

57

Nó là 320 x 49.

Nếu bạn muốn kiểm tra, mở giao diện Builder, thêm một UITabBar, đi vào người cai trị, bạn sẽ thấy nó

UITabBar is inherited from UIVIew vì vậy bạn có thể sử dụng để có được frame.size.height chiều cao

+9

Được đảm bảo giữ nguyên cách đó mọi lúc?Tôi thà sử dụng API để có được giá trị hơn là dựa vào việc sử dụng IB và chèn số ma thuật vào ứng dụng. –

+0

UITabBar được kế thừa từ UIView, vì vậy bạn có thể thử với frame.size.height của UIView – vodkhang

+0

Sẽ cung cấp cho bức ảnh đó khi tôi quay lại công việc. Bạn có biết nếu tôi có thể nhận được điều đó mà không cần tạo một thể hiện của một đối tượng? Hơn nữa, nó sẽ là tốt hơn để tạo ra một trường hợp giả hoặc để vượt qua trong sử dụng UITabBar từ đại biểu ứng dụng để xem tôi đang sử dụng để nó có một giá trị chính xác hơn? –

7

Tôi đang tìm cách làm điều gì đó tương tự với việc định tâm nhãn trong phần VISIBLE của chế độ xem của ViewController. ViewController này thuộc về một UITabBarController.

Dưới đây là đoạn code tôi sử dụng để tập trung nhãn của tôi:

UILabel *roomLabel = [[UILabel alloc] init]; 
CGRect frame = [[self view] bounds]; 
float tabBarHeight = [[[super tabBarController] tabBar] frame].size.height; 
frame.size.height -= tabBarHeight; 
[roomLabel setFrame:frame]; 
[[self view] addSubview:roomLabel]; 
[roomLabel release]; 

Chú ý rằng tôi sử dụng [[tự xem] giới hạn] không [[tự xem] khung] vì sau này bao gồm 20 điểm ảnh thanh trên cùng như Y bù đắp (mà ném ra các trung tâm dọc).

Hy vọng điều này sẽ giúp ai đó!

Nhân tiện: Tôi đang sử dụng iOS 4.3 và XCode 4 và giá trị "mã cứng" cho chiều cao của TabBar vẫn là 49 đối với tôi!

3

Tôi biết điều này không lý tưởng, nhưng tôi thực sự không muốn có hằng số ma thuật ở bất cứ đâu. Những gì tôi đã làm là tạo ra một UITabBarController throwaway, và nhận được chiều cao từ đó.

Tôi đã làm điều này cũng vì [UITabBar initWithFrame:] hoạt động như mong muốn, nhưng thực hiện [thanh setFrame:] thì không. Tôi cần khung hình chính xác khi tạo.

UITabBarController *dtbc = [[[UITabBarController alloc] init] autorelease]; 

CGRect tabRect = [[[self navigationController] view] frame]; 
tabRect.origin.y = tabRect.size.height - [[dtbc tabBar] frame].size.height; 
tabRect.size.height = [[dtbc tabBar] frame].size.height; 

tabBar_ = [[UITabBar alloc] initWithFrame:tabRect]; 

Điều tôi thích ở đây là nó sẽ đặt thanh tab ở dưới cùng của cha mẹ bất kể kích thước cha mẹ.

39

Nếu bộ điều khiển chế độ xem có tổ tiên là bộ điều khiển thanh tab, bạn có thể truy xuất chiều cao từ thanh tab đó.

CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height; 
2

này nên làm việc trong hầu hết các trường hợp trên bất kỳ trường hợp UIViewController:

bottomLayoutGuide.length 
3

Swift 3+

let tabBarHeight = tabBarController?.tabBar.frame.size.height 
print(tabBarHeight ?? "not defined") 

Nó nên in 49,0 (Type CGFloat)

0

Trong Swift :

let height = self.tabBarController?.tabBar.frame.height ?? 49.0 

Dựa vào chiều cao thực tế của thanh tab và sử dụng số ma thuật làm dự phòng.

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