中心滚动视图对象到每个水平滚动页面-Xamarin iOS

时间:2018-10-25 21:54:26

标签: ios xamarin xamarin.ios uiscrollview xamarin-studio

我正在做与此类似的事情,https://www.youtube.com/watch?v=EwSTK24IQds, 但是对于每个对象,我要放置一个UI文本字段。当我使用不同的设备滚动浏览每个页面时,文本不会居中显示在屏幕中间。无论设备是什么,我都该怎么做才能使对象居中放置? 用户正在填写表单并输入数据,然后滚动到每个字段的下一页。

谢谢

1 个答案:

答案 0 :(得分:0)

原因:

文本框在不同设备中的位置,取决于文本框的布局。

解决方案:

例如,您将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));
    
    }
    

此外,您可以在情节提要中添加约束: center a textfield in storyboard