mar*_*nta 2 iphone objective-c uiwebview uiscrollview ios
我正在尝试制作一个具有“动态屏幕高度”的 UIWebView。该 webview 位于 UIScrollView 内部,位于其他组件下方。查看布局(它使用自动布局):
我的想法是只提供一个滚动(来自 UIScrollView - 它的工作)并使WebView 视口根据内容大小而增长。而且它不起作用。
我做了什么来尝试做到这一点:
在我的 UIViewController 中:
- (void) viewDidAppear:(BOOL)animated {
NSString *urlString = @"MY URL GOES HERE";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[_webViewDescription loadRequest:urlRequest];
_webViewDescription.delegate = self;
_webViewDescription.scrollView.scrollEnabled = NO;
_webViewDescription.scrollView.bounces = NO;
}
Run Code Online (Sandbox Code Playgroud)
我的 UIWebViewDelegate:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
CGRect frame = webView.frame;
frame.size.height = 1;
webView.frame = frame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
webView.frame = frame;
NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
_myScrollView.contentSize = webView.bounds.size;
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它会打印正确的 UIScrollView 大小和 UIWebView 大小。UIScrollView 高度变大,但 UIWebView 从第一次加载时保持相同的高度。
我正在真实设备中进行测试。
向您的 webView 添加高度约束并制作一个 IBOutlet,例如
@property(strong, nonatomic) IBOutlet NSLayoutConstraint *webViewHeightConstraint;
Run Code Online (Sandbox Code Playgroud)
加载您的网络视图并在网络视图委托中
- (void)webViewDidFinishLoad:(UIWebView *)webView
Run Code Online (Sandbox Code Playgroud)
获取 webview 内容高度并设置webViewHeightConstraint.constant
如下:-
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *str = [webView stringByEvaluatingJavaScriptFromString:@"(document.height !== undefined) ? document.height : document.body.offsetHeight;"];
CGFloat height = str.floatValue;
webViewHeightConstraint.constant = height;
}
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助你。