2017-12-14 33 views
0

나는 이벤트를 숨기고 표시하고있는 앱을 가지고 있습니다. 아래의 방법을 사용하고 있습니다. 숨기려고하면 잘 동작합니다. 그러나 내가 그것을 보이게하려고 할 때 그것은 작동하지 않습니다.tabbar를 보이게 할 수 없습니다.

-(void)setTabBarVisible:(BOOL)visible animated:(BOOL)animated completion:(void (^)(BOOL))completion { 

    // RootViewController* tabBarController = (RootViewController*)self.navigationController.parentViewController.parentViewController; 
    UITabBarController *tabBarController = self.tabBarController; 

    CGFloat duration = (animated)? 0.3 : 0.0; 

    CGRect frame = tabBarController.tabBar.frame; 
    CGFloat height = frame.size.height; 
    CGFloat offsetY = (visible)? -height : height; 


    CGRect playerFrame = player.view.frame; 
    CGRect toolBarFrame = self.toolbar.frame; 

    [UIView animateWithDuration:duration animations:^{ 

     CGRect fr = CGRectOffset(frame, 0, offsetY); 
     tabBarController.tabBar.frame = fr; 
     if((!visible && ![self toolBarOnBottom]) || visible) { 
      self.toolbar.frame = CGRectOffset(toolBarFrame, 0, offsetY); 
      [self.toolbar layoutIfNeeded]; 
     } 

    } completion:completion]; 


} 

나는 내가이 문제라고 생각은 TabBar의 프레임이 0 내가이 메소드를 호출 두 번째가 볼 수 있도록 코드를 디버깅 할 때. Xcode 9에서 iOS 11 SDK를 테스트 중입니다. 안전 구역이 이것과 관련이 있는지 확실하지 않습니다.

도움을 주시면 감사하겠습니다. 나는이 사용 결국, 작업 솔루션을 얻고 싶었다으로

+0

1. 완벽하게 작동? 2. 언제이 방법을 부릅니까? (다른 방법에서). 3. 자동 레이아웃을 사용하고 있습니까? – danypata

+0

tabbarcontroller가 nil이 아니며 자동 레이아웃을 사용하고 있습니다. –

답변