public override void ViewDidLayoutSubviews( )
        {
            base.ViewDidLayoutSubviews( );

            HeaderLabel.Frame = new CGRect(0, View.Frame.Height * .05f, View.Frame.Width, HeaderLabel.Bounds.Height);

            Version.Layer.Position = new CGPoint((View.Bounds.Width - Version.Bounds.Width) / 2, HeaderLabel.Frame.Bottom);

            // measure and size the username field
            UserNameField.Bounds = new CGRect(0, 0, View.Bounds.Width * .40f, 0);
            CGSize size = UserNameField.SizeThatFits(UserNameField.Bounds.Size);

            UserNameField.Bounds = new CGRect(UserNameField.Bounds.X, UserNameField.Bounds.Y, UserNameField.Bounds.Width, (float)System.Math.Ceiling(size.Height * 1.25f));

            UserNameField.Layer.Position = new CGPoint((View.Bounds.Width - UserNameField.Bounds.Width) / 2, HeaderLabel.Frame.Bottom + 50);


            PasswordField.Bounds = new CGRect(0, 0, View.Bounds.Width * .40f, 0);
            size = PasswordField.SizeThatFits(PasswordField.Bounds.Size);
            PasswordField.Bounds = new CGRect(PasswordField.Bounds.X, PasswordField.Bounds.Y, PasswordField.Bounds.Width, (float)System.Math.Ceiling(size.Height * 1.25f));

            PasswordField.Layer.Position = new CGPoint((View.Bounds.Width - PasswordField.Bounds.Width) / 2, UserNameField.Frame.Bottom + 10);


            LoginButton.Bounds         = new CGRect(0, 0, 100, LoginButton.Bounds.Height);
            LoginButton.Layer.Position = new CGPoint((View.Bounds.Width - LoginButton.Bounds.Width) / 2, PasswordField.Frame.Bottom + 30);

            LoginResult.Frame = new CGRect(0, LoginButton.Frame.Bottom + 20, View.Frame.Width, LoginResult.Bounds.Height);

            float width  = 100;
            float height = 100;

            BusyIndicator.Frame = new RectangleF(((float)View.Bounds.Width - width) / 2, (float)LoginButton.Frame.Bottom + 100, width, height);
        }