私はXamarin.iOsでコーディングしていますが、UITextFieldの下に境界線を追加したいと思います。Xamarin.iOS UITextField/ViewDidAppearの下に境界線を描画するのが遅すぎる
だから、私はそれをGoogleで検索してきたし、(私はXamarin.iosにそれをパーソナライズして)あなたは、私はコンストラクタでのコードのこの部分を置くことができない知っているように、私はこのlink.
UITextField _textField = new UITextField();
_textField.Placeholder = placeHolder;
_textField.AutocapitalizationType = autocap.Value;
_textField.AutocorrectionType = uitextAutocorrect.Value;
_textField.BorderStyle = borderstyle.Value;
_textField.SecureTextEntry = secureTextEntry.Value;
_textField.KeyboardType = uiKeyboardType.Value;
return _textField;
からこのコードを持って、簡単です私のViewControllerとViewWillAppearでもだから、私はViewDidAppearに入れなければならない、BUTそれは遅すぎる、それは私がViewControllerを実行すると、境界線のないtextFieldを表示し、ちょうど数ミリ秒後に境界が表示されます。
この表示に関する問題はありますか?
EDIT:
だから私はもっと詳細に、私の質問をする:ここ
は私の完全なコードです:
パブリッククラスChangePasswordViewController:のUIViewController { //プライベートMainViewModel _viewModel。これらの行では
private UILabel _oldPasswordLabel;
private UITextField _oldPasswordTextField;
private UILabel _newPasswordLabel;
private UITextField _newPasswordTextField;
private UILabel _confirmPasswordLabel;
private UITextField _confirmPasswordTextField;
private User currentUser;
private UIButton _saveNewPassworBtn;
public ChangePasswordViewController(User user)
{
currentUser = user;
}
private void _saveNewPassworBtn_TouchUpInside(object sender, EventArgs e)
{
//do sth
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
// Perform any additional setup after loading the view, typically from a nib.
//_viewModel = new MainViewModel();
Title = Texts.ChangePassword;
View.BackgroundColor = UIColor.White;
_oldPasswordLabel = InitUILabel(Texts.OldPasswordTxt, alignment: UITextAlignment.Right);
_oldPasswordLabel.Font = UIFont.BoldSystemFontOfSize(14);
_oldPasswordLabel.AdjustsFontSizeToFitWidth = true;
_oldPasswordTextField = InitUITextField(Texts.OldPassword, secureTextEntry: true);
this._oldPasswordTextField.ShouldReturn += (textField) => {
_newPasswordTextField.BecomeFirstResponder();
return true;
};
_oldPasswordTextField.BorderStyle = UITextBorderStyle.None;
_newPasswordLabel = InitUILabel(Texts.NewPasswordTxt, alignment: UITextAlignment.Right);
_newPasswordLabel.Font = UIFont.BoldSystemFontOfSize(14);
_newPasswordTextField = InitUITextField(Texts.NewPassword, secureTextEntry: true);
this._newPasswordTextField.ShouldReturn += (textField) => {
_confirmPasswordTextField.BecomeFirstResponder();
return true;
};
_newPasswordTextField.BorderStyle = UITextBorderStyle.None;
_confirmPasswordLabel = InitUILabel(Texts.ConfirmPasswordTxt, alignment: UITextAlignment.Right);
_confirmPasswordLabel.Font = UIFont.BoldSystemFontOfSize(14);
_confirmPasswordTextField = InitUITextField(Texts.NewPassword, secureTextEntry: true);
this._confirmPasswordTextField.ShouldReturn += (textField) => {
textField.ResignFirstResponder();
return true;
};
_confirmPasswordTextField.BorderStyle = UITextBorderStyle.None;
_saveNewPassworBtn = InitUIButton(Texts.Save, _saveNewPassworBtn_TouchUpInside, Colors.MainColor, UIColor.White);
View.AddSubviews(_oldPasswordLabel, _oldPasswordTextField, _newPasswordLabel, _newPasswordTextField,
_saveNewPassworBtn, _confirmPasswordLabel, _confirmPasswordTextField);
//
//constraints
var hMargin = 10;
var hMiniMargin = 5;
var vMargin = 10;
View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints();
View.AddConstraints(
_oldPasswordLabel.AtTopOf(View, 100),
_oldPasswordLabel.AtLeftOf(View, hMargin),
_oldPasswordTextField.Below(_oldPasswordLabel, hMiniMargin),
_oldPasswordTextField.AtLeftOf(View, hMargin),
_oldPasswordTextField.WithSameWidth(View).Minus(hMargin * 2),
_newPasswordLabel.Below(_oldPasswordTextField, vMargin),
_newPasswordLabel.AtLeftOf(View, hMargin),
_newPasswordTextField.Below(_newPasswordLabel, hMiniMargin),
_newPasswordTextField.AtLeftOf(View, hMargin),
_newPasswordTextField.WithSameWidth(View).Minus(hMargin * 2),
_confirmPasswordLabel.Below(_newPasswordTextField, vMargin),
_confirmPasswordLabel.AtLeftOf(View, hMargin),
_confirmPasswordTextField.Below(_confirmPasswordLabel, hMiniMargin),
_confirmPasswordTextField.AtLeftOf(View, hMargin),
_confirmPasswordTextField.WithSameWidth(View).Minus(hMargin * 2),
_saveNewPassworBtn.Below(_confirmPasswordTextField, vMargin * 3),
_saveNewPassworBtn.WithSameWidth(View).Minus(20),
_saveNewPassworBtn.AtLeftOf(View, 10)
);
_newPasswordTextField = SetBottomBorderLine(_newPasswordTextField);
_confirmPasswordTextField = SetBottomBorderLine(_confirmPasswordTextField);
_oldPasswordTextField = SetBottomBorderLine(_oldPasswordTextField);
}
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
this.NavigationItem.SetLeftBarButtonItem(new UIBarButtonItem(Texts.Cancel,UIBarButtonItemStyle.Plain, (sender, args) =>
{
this.NavigationController.SetNavigationBarHidden(false, false);
this.NavigationController.PushViewController(new ProfileViewController(), false);
}), true);
}
public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
}
}
:
_newPasswordTextField = SetBottomBorderLine(_newPasswordTextField)。 _confirmPasswordTextField = SetBottomBorderLine(_confirmPasswordTextField); _oldPasswordTextField = SetBottomBorderLine(_oldPasswordTextField);
私のテキストフィールドの境界を置いていますが、 ViewDidLoadまたはViewWidAppearまたはViewDidLayoutSubviewsにこれらの行を挿入すると、変更が表示されず、ViewDidAppearに配置すると、(ページのコンテンツを表示した後で)数ミリ秒の遅延で完全に表示されます。私のための解決策はありますか?
私は私の更新をチェックし@alirezartbd私の質問 – ali
で詳細を追加しました –
あなたは完璧な男、感謝しています – ali