我是 iOS 编程的新手,我想在 Storyboard 中创建一个 View ,顶部是 UIImageView
,下面是 uiWebView。我设置了一个包含它们的 UIScrollView
,我希望滚动使图像在向下移动时消失。
我按照这个答案 ( link ) 进行了滚动,但 UIWebView
没有正确调整自身大小。我已经尝试了很多解决方案,但如果我调整了 Web View 的大小,我就无法再进行滚动,反之亦然。
特别是,我正在使用:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
_textDetailNews.delegate = self; // the web view delegate
_textDetailNews.scrollView.scrollEnabled = NO;
[_textDetailNews loadHTMLString:description baseURL:nil]; // set text to be shown in web view
}
和
- (void)webViewDidFinishLoad:(UIWebView *)webview
{
CGFloat height = [[_textDetailNews stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
[_scrollView setContentSize: CGSizeMake(_scrollView.frame.size.width, height + _scrollView.frame.size.height)];
CGRect oldBounds = [[self textDetailNews] frame];
[_textDetailNews setFrame:CGRectMake(oldBounds.origin.x, oldBounds.origin.y, oldBounds.size.width, height)];
}
其中 _scrollView
已经包含 Storyboard中的 UIImageView
和 UIWebView
集。
拜托,对于使滚动和 UIWebView
高度调整正常工作的任何帮助,我表示感谢。
编辑
我试图让它更清楚。 UIScrollView
与上述代码一起工作正常,但 UIWebView
不会更改其框架。如果我不调用:_srollView
上的 setContentSize
,UIWebView
会更改大小,但 View 不会再滚动。
谁能告诉我问题出在哪里?
最佳答案
您必须委托(delegate)“UIScrollViewDelegate”协议(protocol)。在 .m 文件中,您必须实现以下方法:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
例如:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return nil;
return scrollView.subviews.firstObject;
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
}
关于ios - UIScrollView : scroll working but view not resizing 内的 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995778/