Динамически настройка высоты WebView в .NET MAUI для различного HTML -контента на платформе iOSIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Динамически настройка высоты WebView в .NET MAUI для различного HTML -контента на платформе iOS

Сообщение Anonymous »

Я использую пользовательский WebView в моем приложении .NET MAUI для отображения динамического контента HTML на iOS. Контент HTML меняется ежедневно, и мне нужно соответствующим образом настроить высоту веб -просмотра. Реализация: < /p>
public class MyWebViewRenderer : ViewRenderer
{
WKWebView _wkWebView;

protected override void OnElementChanged(ElementChangedEventArgs e)
{
base.OnElementChanged(e);

if (Control == null)
{
var config = new WKWebViewConfiguration();
config.AllowsInlineMediaPlayback = true;
_wkWebView = new WKWebView(Frame, config);
//transparent background
_wkWebView = new WKWebView(CGRect.Empty, config);
_wkWebView.BackgroundColor = UIColor.Clear;
_wkWebView.ScrollView.BackgroundColor = UIColor.Clear;
_wkWebView.ScrollView.ScrollEnabled = false;
_wkWebView.Opaque = false;
_wkWebView.NavigationDelegate = new MyNavigationDelegate();
SetNativeControl(_wkWebView);

if (Device.Idiom == TargetIdiom.Tablet)
{
//when targeting on iPad, add this to force the iPad behavior
_wkWebView.Configuration.DefaultWebpagePreferences.PreferredContentMode = WKContentMode.Mobile;
}
SetNativeControl(_wkWebView);
}
}

public class MyNavigationDelegate : WKNavigationDelegate
{
public override void DidFinishNavigation(WKWebView webView, WKNavigation navigation)
{
string fontSize = "";
if (Device.Idiom == TargetIdiom.Phone)
{
fontSize = "500%"; // > 100% shows larger than previous
}
else if (Device.Idiom == TargetIdiom.Tablet)
{
fontSize = "320%"; // > 100% shows larger than previous
}

string injectCustomFontScript = @"
let style = document.createElement('style');
style.innerHTML = `
@font-face {
font-family: 'CustomFont';
src: url('Poppins-Light') format('truetype');
}
body, p, h1, h2, h3, h5, h6 {
font-family: 'CustomFont', sans-serif !important;
color: #313131 !important;
}
h4 {
font-family: 'CustomFont', sans-serif !important;
color: #679E18 !important;
}
`;
document.head.appendChild(style);
";

string stringsss = String.Format(@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '{0}'", fontSize);
WKJavascriptEvaluationResult handler = (NSObject result, NSError err) =>
{
if (err != null)
{
System.Console.WriteLine(err);
}
if (result != null)
{
System.Console.WriteLine(result);
}
};
webView.EvaluateJavaScript(stringsss, handler);
webView.EvaluateJavaScript(injectCustomFontScript, handler);
}

}

protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);

if (e.PropertyName == "Url")
{
string finalHtml = Element.Url.Replace("width=\"640\"", "width=\"1000\"");
Control.LoadHtmlString(finalHtml, null);
}
}
}
< /code>
xaml code: < /p>



10000
15000
10000



< /code>
Я хочу, чтобы высота веб -просмотра автоматически регулировалась на основе высоты контента HTML вместо установки фиксированного Heightrequest. Поскольку контент меняется ежедневно, я не могу жесткой кодировки определенной высоты.

Подробнее здесь: https://stackoverflow.com/questions/794 ... ent-on-ios
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»