gpt4 book ai didi

ios - 如何在 iOS 中使用 WebView、Nativescript 使高度动态化?

转载 作者:行者123 更新时间:2023-11-29 05:27:22 24 4
gpt4 key购买 nike

我遇到的问题是,WebView 不会在 iOS 中动态加载高度(如果在 Android 中加载),问题是我的内容是动态的并且可以变高,并且放置固定高度对我来说不起作用。你能帮我吗?

<CardView *ngFor="let itinerario of itinerario" class="card" elevation="40" radius="10" ios:shadowRadius="3">
<StackLayout class="card-layout text-center">
<WebView [src]="itinerario.mEstructura" height="auto"></WebView>
</StackLayout>
</CardView>

最佳答案

使用原生方法来评估可以返回文档高度的 JavaScript。

HTML

<GridLayout>
<ScrollView class="page">
<StackLayout>
<WebView src="https://www.nativescript.org/" [height]="height"
(loadFinished)="onWebViewLoadFinished($event)"></WebView>
<Button class="btn btn-primary" text="Hello!"></Button>
</StackLayout>
</ScrollView>
</GridLayout>

TS

 onWebViewLoadFinished(event: EventData) {
const webView = <WebView>event.object,
jsStr = `var body = document.body;
var html = document.documentElement;
Math.max( body.scrollHeight, body.offsetHeight,
html.clientHeight, html.scrollHeight, html.offsetHeight);`;

if (webView.ios) {
webView.ios.scrollView.scrollEnabled = false;
webView.ios.evaluateJavaScriptCompletionHandler(jsStr,
(
result,
error
) => {
if (error) {
console.log("error...");
} else if (result) {
this.height = layout.toDeviceIndependentPixels(result);
this.changeDetectorRef.detectChanges();
}
});
} else if (webView.android) {
// Works only on Android 19 and above
webView.android.evaluateJavascript(
jsStr,
new android.webkit.ValueCallback({
onReceiveValue: (height) => {
this.height = layout.toDeviceIndependentPixels(height);
this.changeDetectorRef.detectChanges();
}
})
);
}
}

Playground Sample

关于ios - 如何在 iOS 中使用 WebView、Nativescript 使高度动态化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58032338/

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