2

我有一个带有主页的应用程序是一个隐藏的导航栏,当我从带有导航栏的子页面返回到这个主页时,因为我将导航设置在主页方法中隐藏:-(void)viewWillAppear,我发现一个黑框会出现动画,如何避免呢?非常感谢!!!

4

5 回答 5

14

Ok , I find the answer:

self.navigationController.view.backgroundColor = [UIColor redColor];
于 2012-04-12T03:42:26.650 回答
7

这可以解决问题而不会破坏颜色,这可能导致导航控制器的颜色错误。

只需在 viewWillAppear 中将其设置为动画即可:)

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:YES];
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

如果您使用导航控制器返回页面,请将 Animation 设置为 NO

- (IBAction)backButtonClicked:(id)sender {
    [self.navigationController setNavigationBarHidden:NO animated:NO];
    [self.navigationController popToRootViewControllerAnimated:YES];
}
于 2015-11-03T14:08:37.113 回答
2

如果在选项卡之间切换时发生在选项卡控制器应用程序中,这可能会对某人有所帮助

override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            self.navigationController?.setNavigationBarHidden(true, animated: true)
        }

override func viewWillDisappear(_ animated: Bool) {
            super.viewWillDisappear(animated)
            if self.navigationController?.visibleViewController != self {
                self.navigationController?.setNavigationBarHidden(false, animated: true)
            }
        }
于 2018-03-14T11:35:14.847 回答
0

对于 Swift3.0

在第一个视图控制器中

override func viewWillAppear(_ animated: Bool) {
     super.viewWillAppear(true)
     self.navigationController?.setNavigationBarHidden(true, animated: true)
    }

在第二个 ViewController

func backButtonPressed() {
        self.navigationController?.setNavigationBarHidden(false, animated: false)
        self.navigationController?.popViewController(animated: true)
    } 
于 2017-05-18T04:11:20.193 回答
0

在调用后调用 layoutSubviews() 以隐藏或显示导航栏:

[self.navigationController.view layoutSubviews];
于 2021-04-13T02:58:58.483 回答