контроллер представления не соблюдает ограничения (xamarin. ios) [решено] - PullRequest
0 голосов
/ 09 июля 2020
• 1000 ограничения, которые не соблюдаются при завершении анимации, в результате чего ..

enter image description here

while the result should be this ..

введите описание изображения здесь

сейчас я пытался решить этот случай какое-то время, у меня кончились решения, и я до сих пор не понимаю, почему это выглядит так, код такой ..

public void SlideTo(UIView View, string A)
    {
        var CC = CGAffineTransform.MakeTranslation(View.Bounds.Size.Width, 0);
        var DD = CGAffineTransform.MakeTranslation(0, 0);

        //Istanzio il vc
        var storyboard = UIStoryboard.FromName("Main", null);
        var vc = storyboard.InstantiateViewController(A);
        
        CALayer gradient = new CALayer();
        gradient.Frame = vc.View.Bounds;
        vc.View.Layer.InsertSublayer(gradient, 1);
        View.AddSubview(vc.View);

        //Centro quella giusta
        vc.View.Transform = true ? CC : DD;

        UIView.Animate(1, 0, UIViewAnimationOptions.CurveLinear, () =>
        {
            vc.View.Transform = true ? DD : CC;


        }, null);
    }

пожалуйста, только решения для xamarin. ios (не быстро)

1 Ответ

1 голос
/ 10 июля 2020

Безопасная область - это новый способ мышления о видимом пространстве вашего приложения и о том, как добавляются ограничения между представлением и супервизором.

Возможно, эта проблема является результатом SafeArea.

Здесь вы можете изменить код, чтобы попробовать:

public override void ViewDidAppear(bool animated)
{
    base.ViewDidAppear(animated);
    
    //suberView is your table view 
    View.Add(suberView);
    suberView.TranslatesAutoresizingMaskIntoConstraints = false;

    var safeGuide = View.SafeAreaLayoutGuide;
    suberView.LeadingAnchor.ConstraintEqualTo(safeGuide.LeadingAnchor).Active = true;
    suberView.TrailingAnchor.ConstraintEqualTo(safeGuide.TrailingAnchor).Active = true;
    suberView.TopAnchor.ConstraintEqualTo(safeGuide.TopAnchor).Active = true;
    suberView.BottomAnchor.ConstraintEqualTo(safeGuide.BottomAnchor).Active = true;

    View.LayoutIfNeeded();
}
...