gpt4 book ai didi

ios - 是否可以隐藏 UINavigationController 然后在用户向下滑动时显示它?

转载 作者:行者123 更新时间:2023-11-28 22:08:44 24 4
gpt4 key购买 nike

我有一个 View ,我想要全屏,我隐藏了系统栏和 UINavigationBar 但我想让它重新出现在一些用户交互中,例如向下拖动内容或按靠近顶部边缘等(这更容易实现并且对用户更友好)。

到目前为止,我的搜索没有成功,因此我的问题是 SO。

编辑:值得一提的是,这个全屏显示的 View 是 UIWebView,UINavigationBar 被用在这个 View 上,通过后退按钮提供“返回”功能。

最佳答案

我相信这是可能的。

如果你想要一些简单的用户交互,比如向下拖动,那么你需要使用 UIScrollView 并实现它的委托(delegate)。之后,您可以使用其中一些方法

– scrollViewWillEndDragging:withVelocity:targetContentOffset:

– scrollViewDidEndDragging:willDecelerate:

然后显示/隐藏UINavigationBar

[self.navigationController setNavigationBarHidden:YES/NO animated:YES];


如果上面的逻辑不成立。您可以使用 UIView 伪造 UINavigationBar。使用这些委托(delegate)很容易显示和隐藏它。

//编辑:如果您不想使用UIScrollView,您可以使用UIPanGestureRecognizer 并检查手势是否为向下/向上拖动。不过,我认为使用 UIScrollView 会容易得多。


//更新:您仍然可以使用 UIScrollViewUIWebView。像这样

-(void)viewDidLoad
{
//init an UIScrollView and UIWebView
[self.view addSubview:theScrollView];
[theScrollView addSubview:theWebView];

//back button
UIButton *back = [[UIButton alloc] init];
//custom button: set its frame, title, image ...

//set action for button
[back addTarget:self action:@selector(backAction:) forEvent:UIControlEventTouchUpInside];
//add to view
[theWebView addSubView: back]; //or [self.view addSubView:back]; --both will work just fine

}

-(void)backAction:(UIButton *)sender
{
//if you use navigation push, use this
[self.navigationController popViewControllerAnimated:YES];
//if you use navigation modal, add this line of code to its previous view controller
[self.navigationController dismissViewControllerAnimated: YES completion: nil];
}

完成! :)

关于ios - 是否可以隐藏 UINavigationController 然后在用户向下滑动时显示它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23388294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com