MvvmCross Меню гамбургера iOS без плагинов iOS Native

Что бы я хотел

Хорошо, это то, что я хотел бы сделать в MvvmCross без каких-либо плагинов, только с собственным кодом. Я нашел учебник о том, как это сделать, но я хотел бы, чтобы он был в MvvmCross.iOS Посмотрите, что я хотел бы сделать в MvvmCross.iOS

Пожалуйста, сообщите или отправьте лучший учебник для MvvmCross.iOS

моменты, чтобы помнить

Меню гамбургера должно иметь эффект перетаскивания, как изображение, которое я связал

что я пробовал

ViewDidLoad() -->

UIPanGestureRecognizer gesture = new UIPanGestureRecognizer();


        gesture.AddTarget(() => HandleDrag(gesture));
        this.View.AddGestureRecognizer(gesture);

        panGestureRecognizer = new UIScreenEdgePanGestureRecognizer ( HandleSwipeRight);
        panGestureRecognizer.Edges = UIRectEdge.Left;
        this.View.AddGestureRecognizer(panGestureRecognizer);

Ручное перетаскивание () -->

        protected void HandleDrag(UIPanGestureRecognizer recognizer)
    {
        PointF offset2 = (System.Drawing.PointF)recognizer.TranslationInView(View);


        if (recognizer.State != (UIGestureRecognizerState.Cancelled | UIGestureRecognizerState.Failed
            | UIGestureRecognizerState.Possible))
        {
            Console.WriteLine("Here");
            // NEED TO LOAD ANOTHER VIEW HERE
            openMenu();

        }

    }

открытьМеню() -->

        public void openMenu()
    {
        viewBlack.Hidden = false;
        this.view.Hidden = false;
        UIView.Animate(
             duration: 0.3,
             delay: 0,
             options: UIViewAnimationOptions.CurveEaseInOut |
                 UIViewAnimationOptions.Autoreverse,
             animation: () =>
             {

            this.view.LayoutIfNeeded();
                 this.viewBlack.Alpha = this.maxBlackViewAlpha = 0.5f;
             },
             completion: () =>
             {
                 panGestureRecognizer.Enabled = false;
             }
        );
    }

скрытьМеню() -->

        public void closeMenu(){

        UIView.Animate(
    duration: 0.3,
    delay: 0,
    options: UIViewAnimationOptions.CurveEaseInOut |
        UIViewAnimationOptions.Autoreverse,
    animation: () =>
    {
            this.view.LayoutIfNeeded();
            this.viewBlack.Alpha = 0;
    },
    completion: () =>
    {
            panGestureRecognizer.Enabled = true;
            viewBlack.Hidden = true;
            view.Hidden = true;
    }
    );
    }

Мое пользовательское меню гамбургера UIView -->

            view = new UIView();
        view.Frame = new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width / 1.1, UIScreen.MainScreen.Bounds.Height);
        var gradientLayer = new CAGradientLayer();
        gradientLayer.Colors = new[] { UIColor.FromRGB(64, 0, 128).CGColor, UIColor.FromRGB(0, 0, 128).CGColor };
        gradientLayer.Locations = new NSNumber[] { 0, 1 };
        gradientLayer.Frame = view.Frame;
        view.BackgroundColor = UIColor.Clear;
        view.Layer.AddSublayer(gradientLayer);
        var viewline = new UIView();
        viewline.Frame = new CGRect(20, 60, 100, 1);
        viewline.BackgroundColor = UIColor.White;
        var bb = new UIBarButtonItem();
        var Allbutton = new UIButton(new CGRect(0, 20, 135, 20));
        Allbutton.SetTitleColor(UIColor.Black, UIControlState.Normal);
        Allbutton.TitleLabel.BackgroundColor = UIColor.White;
        Allbutton.SetTitle("Login", UIControlState.Normal);
        var myPrefbutton = new UIButton(new CGRect(0, 120, 135, 20));
        myPrefbutton.SetTitleColor(UIColor.Black, UIControlState.Normal);
        myPrefbutton.SetTitle("Logout", UIControlState.Normal);
        myPrefbutton.TitleLabel.BackgroundColor = UIColor.White;
        view.BackgroundColor = UIColor.White;
        view.Add(Allbutton);
        view.Add(viewline);
        view.Add(myPrefbutton);
        view.Hidden = true;
        this.View.AddSubviews(view);

это единственный код, который я смог преобразовать в MvvmCross.iOS из учебника (SWIFT), и он работает, но я не могу перетащить меню, чтобы показать, что происходит, так это то, что он загружается нормально и быстро

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

пожалуйста, внимательно посмотрите на .gif уведомление о том, что меню можно перетаскивать, что делает его анимацию медленной, а не быстрой.

если я запутал вас, пожалуйста, не грустите, я только начал программировать в iOS и MvvmCross... я все еще нуб


person Komicon    schedule 12.10.2018    source источник


Ответы (1)


Получил это на работу

сначала пришлось создать класс UIVew -->

Сайдменувиев: MvxViewController

затем установите X на минус... он будет равен нулю, если пользователь выберет элемент навигации. Я также добавил наложение UIView

        viewBlack = new UIView();
        viewBlack.Frame = new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, UIScreen.MainScreen.Bounds.Height);
        viewBlack.BackgroundColor = UIColor.Black;
        viewBlack.Alpha = 0.5f;
        viewBlack.Hidden = true;
        this.View.AddSubviews(viewBlack);
person Komicon    schedule 23.10.2018