我希望对 a 透明UIToolBar
,UIWebView
以便用户获得更广泛的视角和概览。
但是,当我这样做时,您看不到页面底部。我考虑过在底部设置一个偏移量,但这是不可信的,因为缩放级别可能会有所不同(并且每个像素的价值都会降低)。
如何使webView
滚动并停止在顶部边缘UIToolBar
?
我希望对 a 透明UIToolBar
,UIWebView
以便用户获得更广泛的视角和概览。
但是,当我这样做时,您看不到页面底部。我考虑过在底部设置一个偏移量,但这是不可信的,因为缩放级别可能会有所不同(并且每个像素的价值都会降低)。
如何使webView
滚动并停止在顶部边缘UIToolBar
?
您必须设置 contentInset 和 scrollIndicatorInsets。如果您不设置 scrollIndicatorInsets,滚动指示器将位于您的 UIToolbar 下方,这看起来不正确。
float toolbarHeight = toolbar.frame.size.height;
UIEdgeInsets insets = webView.scrollView.contentInset;
insets.bottom = toolbarHeight;
[webView.scrollView setContentInset:insets];
UIEdgeInsets indicatorInsets = webView.scrollView.scrollIndicatorInsets;
indicatorInsets.bottom = toolbarHeight;
[webView.scrollView setScrollIndicatorInsets:indicatorInsets];
我通过在 UIWebView 的 UIScrollView 子视图中设置一个插图来修复它:
for (id view in [webView subviews]){
if ([view isMemberOfClass:[UIScrollView class]]){
[(UIScrollView *)view setContentInset:UIEdgeInsetsMake(0, 0, 44, 0)];
}
}
看起来和工作都很棒!
我尝试了 Emils 解决方案,但它不适用于 iOS7,因为它继承自UIWebViewScrollView
. 因此,将他的代码修改为以下内容:
for (id view in [self.webView subviews]){
if ([view respondsToSelector:@selector(setContentInset:)]){
[(UIScrollView *)view setContentInset:UIEdgeInsetsMake(0, 0, 44, 0)];
}
}
听起来您不希望 UIToolbar 与您的 UIWebView 重叠。相反,您希望设置它们的框架,以便 UIWebView 仅扩展到 UIToolbar 开始的位置。
如果您以编程方式设置这两个视图,只需将 UIWebView 框架的高度设置为其父级边界的大小 - UIToolbar 框架的高度。如果您在 InterfaceBuilder 中执行此操作,只需拖动 UIWebView 的底部边缘以调整其大小,使其停止在 UIToolbar 开始的位置,或在检查器中修改其框架。