Причина:
Положение вашего текстового поля на разных устройствах в зависимости от макета вашего текстового поля.
Решение:
Например, вы добавляете 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));
}
Также вы можете добавить ограничения в раскадровку: центрировать текстовое поле в раскадровке