C# 在UIScrollView XAMARIN.IOS C中添加UIWebView#
我想在UIScrollView中添加UIWebView(和一些其他元素) 首先,我的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
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 ? L'Argentine se retrouve dans une situation extrêmement délicate dans la course à la qualification au Mondial 2018 en faisant match nul (0-0) jeudi face au Pé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éel : sixième et en dehors de la zone de qualification à une journée de la fin, l'Albiceleste doit impérativement s'imposer mardi face à l'Équateur, déjà éliminé.<br /><br />Cinq é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âce à son succès de jeudi (2-1) face à la Colombie (4e, 26 points).<br /><br />L'Argentine ne pointe qu'en sixième position, avec le même nombre de points que les Péruviens (5e, 25), qui occupent pour le moment une place de barragiste et rêvent à une première participation au Mondial depuis 1982.</p>
<h3>Sampaoli est «très confiant»</h3>
<p>Même s'il admet que la position de l'Argentine <em>«n'est pas très confortable»</em>, le sélectionneur Jorge Sampaoli se veut <em>«très confiant dans le fait que nous allons être au Mondial»</em>. Pour le match crucial de jeudi face au Pérou, la Fédération argentine avait misé sur l'ambiance bouillante du mythique stade de la Bombonera.<br /><br />Poussés par quelque 50 000 supporters, les locaux ont eu beaucoup de mal à trouver des espaces face à des Péruviens bien regroupés derrière. Messi a cru ouvrir le score dès la 13e minute, sur une belle combinaison sur corner, mais un défenseur s'est jeté in extremis pour dévier un ballon qui semblait prendre la direction des filets. La Bombonera a soupiré une nouvelle fois dix minutes plus tard, quand Di Maria - remplacé à la pause - a manqué une belle occasion en tirant au-dessus.<br /><br />Les nerfs à vif, les supporters ont retenu leur souffle à la 33e, en voyant Farfan manquer le cadre de peu sur un centre à ras de terre Trauco. Messi bien touché le poteau au retour des vestiaires, mais l'Albiceleste a livré une nouvelle fois une copie bien pâle. <em>«On ne peut pas en demander plus à Leo Messi. Il a eu des opportunités, les a créées, a eu des balles de but. On a eu un Messi très intense, celui dont l'Argentine a besoin»</em>, a considéré Sampaoli.<br /><br />La dernière fois que l'Albiceleste a raté un Mondial (celui de 1970, au Mexique), elle avait été condamnée par un match nul (2-2) face au Pérou, dans ce mê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)