2009-07-30 62 views
19

Tôi có một UITabBar trong giao diện chi tiết của ứng dụng dựa trên điều hướng của tôi. Tôi đang lưu trữ văn bản và hình ảnh trong chế độ xem bảng và muốn người dùng có thể nhấn vào một ô để ẩn bộ điều hướng điều hướng và thanh tab để xem toàn màn hình nội dung.Có thể ẩn thanh tab khi nhấn một nút để cho phép xem toàn màn hình nội dung không?

Tôi tìm thấy mã này để ẩn các thanh trên cùng, nhưng dường như không dễ dàng để ẩn thanh tabbar.

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 
[self.navigationController setNavigationBarHidden:YES animated:YES]; 

Có ai biết cách thực hiện việc này không?

Mã này không hoạt động để ẩn tabBar khi chế độ xem đã được tải.

yourTabViewController.hidesBottomBarWhenPushed = YES; 

Đây là mã tôi tìm thấy. Dường như chỉ hoạt động khi chế độ xem được tải, do đó, nó không thể được sử dụng để ẩn thanh tabbar khi nó đã xuất hiện. Tôi vẫn đang đấu tranh để thực hiện công việc này. Hãy giúp tôi!!!

self.tabBarController.tabBar.hidden = YES; 

Trả lời

8

Cách giải quyết tốt nhất tôi đã tìm thấy là thay đổi kích thước chế độ xem sao cho nó bao gồm thanh tabbar. Dưới đây là mã của tôi cho ẩn Statusbar, Navbar, và TabBar khi liên tiếp được chọn:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

if (appDelegate.navigationController.navigationBar.hidden == NO) 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 
    [appDelegate.navigationController setNavigationBarHidden:YES animated:YES]; 

    [UIView beginAnimations:@"HideTabbar" context:nil]; 
    [UIView setAnimationDuration:.2]; 
    self.view.frame = CGRectMake(0,0,320,480); 
    [UIView commitAnimations]; 
} 
if (appDelegate.navigationController.navigationBar.hidden == YES) 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES]; 
    [appDelegate.navigationController setNavigationBarHidden:NO animated:YES]; 

    [UIView beginAnimations:@"ShowTabbar" context:nil]; 
    [UIView setAnimationDuration:.2]; 
    self.view.frame = CGRectMake(0,0,320,368); 
    [UIView commitAnimations]; 
} 
} 
+2

Tôi muốn sử dụng một "khác", nhưng đó là tôi ... –

0

Để điều chỉnh kích thước của cửa sổ của bạn, trước tiên bạn cần phải chọn tùy chọn NONE trong lĩnh vực thanh trạng thái, trong tab Thuộc tính, trong cửa sổ Thanh tra của bạn. Trình tạo giao diện sau đó sẽ cho phép bạn thay đổi kích thước cửa sổ của mình.

26

Có một cách built-in để làm điều này:

self.hidesBottomBarWhenPushed = YES;

Nhưng bạn phải làm điều này trước khi quan điểm được đẩy. Đây là cách bạn có thể muốn sử dụng:

ChildViewController* childVC = [[ChildViewController alloc] init]; 
childVC.hidesBottomBarWhenPushed = YES; 
[self.navigationController pushViewController:childVC animated:YES]; 
[childVC release]; 
+9

Hoặc chỉ cần đặt self.hidesBottomBarWhenPushed = YES bên trong phương pháp init của bộ điều khiển –

+0

Tốt gọi. Cảm ơn. –

+2

Điều gì sẽ xảy ra nếu tôi muốn thực hiện điều đó với khung nhìn rootController ở đầu ngăn xếp? –

6

Giải pháp của tôi:

// Hide tab bar animated 
CATransition *animation = [CATransition animation]; 
[animation setType:kCATransitionFade]; 
[[self.view.window layer] addAnimation:animation forKey:@"layerAnimation"]; 
[self.tabBarController.tabBar setHidden:YES]; 

// Display tab bar animated 
CATransition *animation = [CATransition animation]; 
[animation setType:kCATransitionFade]; 
[[self.view.window layer] addAnimation:animation forKey:@"layerAnimation"]; 
[self.tabBarController.tabBar setHidden:NO]; 

Bạn phải thêm #import <QuartzCore/QuartzCore.h>

+0

Điều này làm việc tuyệt vời! Bạn có thể đặt "không có thanh đáy" trong bảng điều khiển hoặc bảng điều khiển bên phải của trình điều khiển giao diện cho bộ điều khiển mà bạn đang sửa đổi để có được ý tưởng chính xác hơn về nơi các phần tử giao diện kết thúc khi bạn ẩn thanh tab –

+0

Điều này ẩn thanh tab, nhưng để lại một không gian đen xấu xí – Dejell

3

Tôi đã tìm thấy một câu trả lời cho vấn đề này, rất đơn giản và có hiệu lực.

Giải pháp là đặt tùy chọn "Ẩn thanh dưới cùng khi đẩy" trong TẤT CẢ XEM, KIỂM SOÁT XEM và KIỂM SOÁT TAB BAR của ứng dụng của bạn.

Bạn có thể thực hiện điều này bằng IB hoặc bằng mã.

Hy vọng bạn điều này sẽ giúp mọi người ...

0

Trong trường hợp bất kỳ ai cần sử dụng phiên bản MonoTouch, mẹo nhỏ gọn này. (Cảm ơn!)

// Method implementations 
    static void hideTabBar (UITabBarController tabbarcontroller) 
    { 
     UIView.Animate(0.4, delegate() { 
      foreach(UIView view in tabbarcontroller.View.Subviews) 
      { 
       if(view.GetType()==typeof(UITabBar)) 
        view.Frame=new RectangleF(view.Frame.X, 480, view.Frame.Size.Width, view.Frame.Size.Height); 
       else 
        view.Frame=new RectangleF(view.Frame.X, view.Frame.Y, view.Frame.Size.Width, 480); 
      } 
     }); 
    } 

    static void showTabBar (UITabBarController tabbarcontroller) 
    { 
     UIView.Animate(0.4, delegate() { 
      foreach(UIView view in tabbarcontroller.View.Subviews) 
      { 
       if(view.GetType()==typeof(UITabBar)) 
        view.Frame=new RectangleF(view.Frame.X, 367, view.Frame.Size.Width, view.Frame.Size.Height); 
       else 
        view.Frame=new RectangleF(view.Frame.X, view.Frame.Y, view.Frame.Size.Width, 367); 
      } 
     }); 
    } 
Các vấn đề liên quan