Adding UIWebView inside UIScrollView XAMARIN.IOS

dash_alirezadash_alireza USMember
edited October 31 in Xamarin.iOS

I'd like to add a UIWebView (and some other elements) in a UIScrollView.

First of all, my UIWebView has not a fix text and could be change.

So, as I saw in examples and tutorials I can do it like this:

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 />


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é.

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).

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.

Sampaoli est «très confiant»

Même s'il admet que la position de l'Argentine «n'est pas très confortable», le sélectionneur Jorge Sampaoli se veut «très confiant dans le fait que nous allons être au Mondial». 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.

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.

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. «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», a considéré Sampaoli.

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.

";

        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)

        );
    }



}

If you run it, you will see that the UIScrollView has the same height of screen and it's not dynamic!

So, maybe it seems that the UIWebView has not a correct height (has not a corrected frame size)! If it's the case, how can I predict the Height of UIWebView?

Even if I use CGRect for creating adding UIWebView's frame to my UIScrollView, I need a Height for it!

Do you have any idea dear developers?

1.txt 5.5K
Sign In or Register to comment.