我需要帮助,我正在尝试构建一个应用程序,其中有一个viewcontroller
带有auiwebview
和一个navbar
带有2个按钮的应用程序。我想做的是,当用户滚动uiwebview
导航栏时,它会自动像滑动起来一样隐藏起来。但不能正常工作,我希望它能工作。让我在这里发布代码。在viewdidload
我把这个。
[webPage.scrollView setDelegate:self];
然后我有这种方法
- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
if(scrollView.contentOffset.y == 0) {
//show
NSLog(@"Show");
[self.navigationController setNavigationBarHidden:NO animated:YES];
} else {
NSLog(@"Hide");
[self.navigationController setNavigationBarHidden:YES animated:YES];
//hide
}
}
它NSLog
正确,但是没有别的navbar
仍然停留。:(
您可以尝试以下方法:
1.声明导航栏,一个带有导航栏高度和2个BOOL变量的常量:
UINavigationBar *navBar;
static const CGFloat kNavBarHeight = 60.0f;
BOOL webViewScrollIsDragging;
BOOL webViewScrollIsDecelerating;
2.在viewDidLoad中编写以下内容:
[webView.scrollView setContentInset:UIEdgeInsetsMake(kNavBarHeight, 0, 0, 0)];
[webView.scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(kNavBarHeight, 0, 0, 0)];
[webView.scrollView setContentOffset:CGPointMake(0, -kNavBarHeight) animated:NO];
webView.scrollView.delegate = self;
然后初始化并将其UINavigationBar
作为子视图添加到self.view
原点(还请确保您UIWebView
具有相同的原点,即(0,0))。
3.实现UIScrollViewDelegate
方法(别忘了添加UIScrollViewDelegate
协议):
#pragma mark - UIScrollViewDelegate Methods
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView == webview.scrollView)
{
if (scrollView.contentOffset.y == 1 && !webViewScrollIsDragging && !webViewScrollIsDecelerating)
{
[UIView animateWithDuration:0.3
delay:0.0
options: UIViewAnimationCurveEaseOut
animations:^(void) {
CGRect navBarFrame = CGRectMake(0,-scrollView.contentOffset.y-kNavBarHeight, self.view.bounds.size.width, kNavBarHeight);
navBar.frame = navBarFrame;
}
completion:nil];
}
else
{
CGRect navBarFrame = CGRectMake(0,-scrollView.contentOffset.y-kNavBarHeight, self.view.bounds.size.width, kNavBarHeight);
navBar.frame = navBarFrame;
}
if (scrollView.contentOffset.y < -kNavBarHeight)
{
[webview.scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(fabsf(scrollView.contentOffset.y), 0, 0, 0)];
}
}
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
if (scrollView == webview.scrollView)
{
webViewScrollIsDragging = YES;
}
}
- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (scrollView == webview.scrollView)
{
webViewScrollIsDragging = NO;
}
}
- (void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
if (scrollView == webview.scrollView)
{
webViewScrollIsDecelerating = YES;
}
}
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (scrollView == webview.scrollView)
{
webViewScrollIsDecelerating = NO;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句