Центральная прокрутка Просмотр объектов на каждой странице с горизонтальной прокруткой - Xamarin iOS - PullRequest
0 голосов
/ 26 октября 2018

Я делаю нечто очень похожее на это, https://www.youtube.com/watch?v=EwSTK24IQds,, но для каждого объекта я размещаю текстовое поле пользовательского интерфейса.Когда я прокручиваю каждую страницу на разных устройствах, текст не центрируется по центру экрана.Что мне нужно сделать, чтобы объект находился в центре, независимо от того, какое это устройство?Пользователь заполняет форму, вводит данные и переходит к следующей странице для каждого поля.

Спасибо

1 Ответ

0 голосов
/ 26 октября 2018

Причина:

Положение вашего текстового поля на разных устройствах в зависимости от макета вашего текстового поля.

Решение:

Например, вы добавляете textField в представление по умолчанию ViewController.

Я предоставляю два метода для центрирования текстового поля в представлении независимо от того, какое устройство используется:

  • Во-первых, используйте Frame. Вы можете рассчитать координаты текстового поля в другом устройстве.
  • Во-вторых, используйте Autolayout. Вы можете добавить ограничения в текстовое поле, чтобы определить его положение.

    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
        // Perform any additional setup after loading the view, typically from a nib.
    
        UITextField myTextView = new UITextField();
        Add(myTextView);
    
        float ScreenWidth = (float)UIScreen.MainScreen.Bounds.Width;
        float ScreenHeight = (float)UIScreen.MainScreen.Bounds.Height;
    
        float textFieldWidth = 200;
        float textFieldHeight = 50;
    
        myTextView.Text = "center myTextView";
        myTextView.TextAlignment = UITextAlignment.Center;
        myTextView.BackgroundColor = UIColor.Blue;
    
        //Method One:
        //Frame Center
        //myTextView.Frame = new CGRect(new CGPoint(View.Center.X-textFieldWidth/2,View.Center.Y-textFieldHeight/2), new CGSize(textFieldWidth, textFieldHeight));
    
        //Frame
        //myTextView.Frame = new CGRect(ScreenWidth / 2 - textFieldWidth / 2, ScreenHeight / 2 - textFieldHeight / 2, textFieldWidth, textFieldHeight);
    
        //Method two:
        //autolayout
        //myTextView.TranslatesAutoresizingMaskIntoConstraints = false;
        //View.AddConstraint(NSLayoutConstraint.Create(myTextView, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, textFieldHeight));
        //View.AddConstraint(NSLayoutConstraint.Create(myTextView, NSLayoutAttribute.Width, NSLayoutRelation.Equal, 1f, textFieldWidth));
        //View.AddConstraint(NSLayoutConstraint.Create(myTextView, NSLayoutAttribute.CenterX, NSLayoutRelation.Equal, View, NSLayoutAttribute.CenterX, 1f, 10f));
        //View.AddConstraint(NSLayoutConstraint.Create(myTextView, NSLayoutAttribute.CenterY, NSLayoutRelation.Equal, View, NSLayoutAttribute.CenterY, 1f, 10f));
    
    }
    

Также вы можете добавить ограничения в раскадровку: центрировать текстовое поле в раскадровке

...