C# 在UIScrollView XAMARIN.IOS C中添加UIWebView#

C# 在UIScrollView XAMARIN.IOS C中添加UIWebView#,c#,ios,xamarin.ios,uiscrollview,uiwebview,C#,Ios,Xamarin.ios,Uiscrollview,Uiwebview,我想在UIScrollView中添加UIWebView(和一些其他元素) 首先,我的UIWebView没有固定文本,可以更改 因此,正如我在示例和教程中看到的,我可以这样做: public class testArticleViewController : UIViewController { private UIScrollView _scrollView; //Post elements UIWebView _artcileTextW

我想在UIScrollView中添加UIWebView(和一些其他元素)

首先,我的UIWebView没有固定文本,可以更改

因此,正如我在示例和教程中看到的,我可以这样做:

public class testArticleViewController : UIViewController
    {
        private UIScrollView _scrollView;

        //Post elements
        UIWebView _artcileTextWeb;

        public testArticleViewController()
        {
            Title = "test";
            View.BackgroundColor = UIColor.White;


        }

        public override void ViewDidLoad()
        {

            string text = @"L'un des deux meilleurs du monde, Lionel Messi, va-t-il manquer la Coupe du monde&nbsp;? L'Argentine se retrouve dans une situation extr&ecirc;mement d&eacute;licate dans la course &agrave; la qualification au Mondial 2018 en faisant match nul (0-0) jeudi face au P&eacute;rou.<br />
<div>
<div>
<div>
<article>
<div>
<div>
<p ><br />Le risque de voir une Coupe du Monde en Russie sans Lionel Messi est bien r&eacute;el&nbsp;: sixi&egrave;me et en dehors de la zone de qualification &agrave; une journ&eacute;e de la fin, l'Albiceleste doit imp&eacute;rativement s'imposer mardi face &agrave; l'&Eacute;quateur, d&eacute;j&agrave; &eacute;limin&eacute;.<br /><br />Cinq &eacute;quipes se tiennent en deux points, entre le Chili (3e, 26 points) et le Paraguay (7e, 24 points) qui garde un mince espoir de qualification gr&acirc;ce &agrave; son succ&egrave;s de jeudi (2-1) face &agrave; la Colombie (4e, 26 points).<br /><br />L'Argentine ne pointe qu'en sixi&egrave;me position, avec le m&ecirc;me nombre de points que les P&eacute;ruviens (5e, 25), qui occupent pour le moment une place de barragiste et r&ecirc;vent &agrave; une premi&egrave;re participation au Mondial depuis 1982.</p>
<h3>Sampaoli est &laquo;tr&egrave;s confiant&raquo;</h3>
<p>M&ecirc;me s'il admet que la position de l'Argentine <em>&laquo;n'est pas tr&egrave;s confortable&raquo;</em>, le s&eacute;lectionneur Jorge Sampaoli se veut <em>&laquo;tr&egrave;s confiant dans le fait que nous allons &ecirc;tre au Mondial&raquo;</em>. Pour le match crucial de jeudi face au P&eacute;rou, la F&eacute;d&eacute;ration argentine avait mis&eacute; sur l'ambiance bouillante du mythique stade de la Bombonera.<br /><br />Pouss&eacute;s par quelque 50 000 supporters, les locaux ont eu beaucoup de mal &agrave; trouver des espaces face &agrave; des P&eacute;ruviens bien regroup&eacute;s derri&egrave;re. Messi a cru ouvrir le score d&egrave;s la 13e minute, sur une belle combinaison sur corner, mais un d&eacute;fenseur s'est jet&eacute; in extremis pour d&eacute;vier un ballon qui semblait prendre la direction des filets. La Bombonera a soupir&eacute; une nouvelle fois dix minutes plus tard, quand Di Maria - remplac&eacute; &agrave; la pause - a manqu&eacute; une belle occasion en tirant au-dessus.<br /><br />Les nerfs &agrave; vif, les supporters ont retenu leur souffle &agrave; la 33e, en voyant Farfan manquer le cadre de peu sur un centre &agrave; ras de terre Trauco. Messi bien touch&eacute; le poteau au retour des vestiaires, mais l'Albiceleste a livr&eacute; une nouvelle fois une copie bien p&acirc;le. <em>&laquo;On ne peut pas en demander plus &agrave; Leo Messi. Il a eu des opportunit&eacute;s, les a cr&eacute;&eacute;es, a eu des balles de but. On a eu un Messi tr&egrave;s intense, celui dont l'Argentine a besoin&raquo;</em>, a consid&eacute;r&eacute; Sampaoli.<br /><br />La derni&egrave;re fois que l'Albiceleste a rat&eacute; un Mondial (celui de 1970, au Mexique), elle avait &eacute;t&eacute; condamn&eacute;e par un match nul (2-2) face au P&eacute;rou, dans ce m&ecirc;me stade de la Bombonera. Cette fois, il reste encore un match, un seul, pour tout changer.</p>
</div>
</div>
</article>
</div>
</div>
</div>";



            var padding = 10;

            View.BackgroundColor = UIColor.White;

            _scrollView = new UIScrollView()
            { ShowsHorizontalScrollIndicator = false, AutoresizingMask = UIViewAutoresizing.FlexibleHeight };

            //Text article
            _artcileTextWeb = new UIWebView();
            _artcileTextWeb.LoadHtmlString(text, null);
            _artcileTextWeb.ScrollView.ScrollEnabled = false;


            var view1 = new UIView { BackgroundColor = UIColor.Blue };
            var view3 = new UIView { BackgroundColor = UIColor.Green };


            Add(_scrollView);

            View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();

            View.AddConstraints(
                _scrollView.AtLeftOf(View),
                _scrollView.AtTopOf(View),
                _scrollView.WithSameWidth(View),
                _scrollView.WithSameHeight(View));

            _scrollView.Add(view1);
            _scrollView.Add(_artcileTextWeb);
            _scrollView.Add(view3);




            _scrollView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();

            var basicwidth = (UIScreen.MainScreen.Bounds.Width - 3 * padding) / 2;
            var basicheight = basicwidth / 2;

            _scrollView.AddConstraints(
                view1.AtTopOf(_scrollView, UIApplication.SharedApplication.StatusBarFrame.Height),
                view1.AtLeftOf(_scrollView, padding),
                view1.Width().EqualTo(basicwidth),
                view1.Height().EqualTo(basicheight),

                view3.WithSameTop(view1),
                view3.Left().EqualTo().RightOf(view1).Plus(padding),
                view3.WithSameHeight(view1),
                view3.WithSameWidth(view1),

                _artcileTextWeb.Below(view1, padding),
                _artcileTextWeb.WithSameLeft(view1),
                _artcileTextWeb.WithSameRight(view3),
                _artcileTextWeb.WithSameHeight(_scrollView)

            );
        }



    }
公共类testArticleViewController:UIViewController
{
私有UIScrollView\u scrollView;
//后元素
UIWebView_artcileTextWeb;
公共testArticleViewController()
{
Title=“测试”;
View.BackgroundColor=UIColor.White;
}
公共覆盖无效ViewDidLoad()
{
字符串文本=@“世界杯冠军,莱昂内尔·梅西,世界杯冠军?阿根廷队在世界杯上的表现,在世界杯上的表现,在2018年世界杯资格赛上的表现非常出色(0-0),在世界杯上的表现非常出色。

没有莱昂内尔·梅西的俄罗斯世界轿跑车的风险是:资格认证区的四分之一和四分之一;没有新闻报道,没有法律,没有法律,没有法律,没有法律,没有法律,é;四分之一,dé;jà;é;liminé;
Cinqé;
;在比赛中,智利队(3e,26分)和巴拉圭队(7e,24分)在资格赛中的得分分别为2分和2分,巴拉圭队(4e,26分)

L'Agentian ne pointe qu'en sixiè;me position,avec le mê;me nombre de points que Pé;ruviens(5e,25),在世界各地的barragiste et rê;ventà;une premiè;re participation of Mondial depuis 1982年

Sampaoli est«;trè;s confiant»; 我是阿根廷立场的坚定拥护者,我是阿根廷人,我是阿根廷人,我是阿根廷人,我是阿根廷人,我是阿根廷人,我是阿根廷人,我是阿根廷人,我是阿根廷人,我是阿根廷人,我是阿根廷人,我是阿根廷人de la Bombonera’s Br/>>Br/> Pous&ePaule&Pauls&ePaulk的50个000支持者,Les LuaOxx EnEubououp de Mael&Agrave;Deffer-EsPress脸和AgRave;Des P&ErAviv. Ruvies BieReung&EaHielDeli&EgGrand;梅西。在极端情况下,芬瑟尔的飞机将向菲力牛排的方向倾斜。炸弹将在几分钟内到达,再加上柏油油,在玛丽亚的广度-报酬与回报;暂停-一个美丽的时刻,在一个令人厌倦的夜晚。

Les nerfsà;vif,Les sup搬运工们在重新装修的时候,会选择一家名为Farfan manquer le Branch de peu sur un centreà;ras de terre Trauco的酒店。梅西会选择一家名为梅西(Leo Messi)的酒店,一家名为Albiceleste a Liveré的酒店,一家新的酒店,一家名为pâ;le的酒店在一场激烈的比赛中,我们不是阿根廷人,而是一个体贴的桑帕利。
El AvaIT和EAHIT;Te&EnActh.; "; var=10; View.BackgroundColor=UIColor.White; _scrollView=新的UIScrollView() {showshorizontalscrolindicator=false,AutoresizingMask=ui视图autoresizing.FlexibleHeight}; //文本文章 _artcileTextWeb=新建UIWebView(); _artcileTextWeb.LoadHtmlString(文本,null); _artcileTextWeb.ScrollView.ScrollEnabled=false; var view1=newuiview{BackgroundColor=UIColor.Blue}; var view3=newuiview{BackgroundColor=UIColor.Green}; 添加(_滚动视图); View.subviewsdonottranslationautoresizingmaskintoconstraints(); View.AddConstraints( _scrollView.AtLeftOf(视图), _scrollView.AtTopOf(视图), _scrollView。使用SameWidth(视图), _scrollView.with sameHeight(视图)); _scrollView.Add(view1); _scrollView.Add(_artcileTextWeb); _scrollView.Add(view3); _scrollView.SubViewsDonotTranslateAutoResizingSkinToConstraints(); var basicwidth=(UIScreen.MainScreen.Bounds.Width-3*填充)/2; var basicheight=basicwidth/2; _scrollView.AddConstraints( view1.AtTopOf(_scrollView,UIApplication.SharedApplication.StatusBarFrame.Height), 视图1.AtLeftOf(滚动视图,填充), view1.Width().EqualTo(基本宽度), 视图1.Height().EqualTo(基本光), 视图3.使用Sametop(视图1), 视图3.Left().EqualTo().RightOf(视图1).Plus(填充), 视图3.具有相同高度(视图1), 视图3。使用SameWidth(视图1), _artcileTextWeb.down(视图1,填充), _artcileTextWeb.with SameLeft(视图1), _artcileTextWeb.WithAmeright(视图3), _artcileTextWeb.WithSameHeight(_scrollView) ); } }
如果运行它,您将看到UIScrollView具有相同的屏幕高度,并且它不是动态的

因此,可能UIWebView的高度不正确(帧大小不正确)!如果是这样,我如何预测UIWebView的高度_artcileTextWeb.Below(view1, padding), _artcileTextWeb.WithSameLeft(view1), _artcileTextWeb.WithSameRight(view3), _artcileTextWeb.Height().EqualTo(_artcileTextWeb.ScrollView.ContentSize.Height), _artcileTextWeb.AtBottomOf(_scrollView)
_artcileTextWeb = new UIWebView(UIScreen.MainScreen.Bounds);
_artcileTextWeb.LoadHtmlString(text, null);
_artcileTextWeb.ScrollView.ScrollEnabled = false;
string result = _artcileTextWeb.EvaluateJavascript("document.body.offsetHeight;");
int height = Convert.ToInt32(result); 


_scrollView.AddConstraints(
            //xxxx

            _artcileTextWeb.Below(view1, padding),
            _artcileTextWeb.WithSameLeft(view1),
            _artcileTextWeb.WithSameRight(view3),
            _artcileTextWeb.Height().EqualTo(height),
            _artcileTextWeb.AtBottomOf(_scrollView)

        );
class MyDelegate : UIWebViewDelegate
{
    UIScrollView mainView;
    public MyDelegate(UIScrollView view) {
        mainView = view;
    }

    public override void LoadingFinished(UIWebView webView)
    {
        string result = webView.EvaluateJavascript("document.body.offsetHeight;");
        mainView.AddConstraints(webView.Height().EqualTo(Convert.ToInt64(result)));
    }
}
_artcileTextWeb = new UIWebView(UIScreen.MainScreen.Bounds);
_artcileTextWeb.Delegate = new MyDelegate(_scrollView);
_artcileTextWeb.LoadHtmlString(text, null);
_artcileTextWeb.ScrollView.ScrollEnabled = false;

 _artcileTextWeb.Below(view1, padding),
 _artcileTextWeb.AtLeftOf(_scrollView),    //modify this line
 _artcileTextWeb.WithSameWidth(_scrollView), //modify this line
 _artcileTextWeb.AtBottomOf(_scrollView)