示例#1
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            Skip.SetTitle(Resources.Skip.ToUpper(), UIControlState.Normal);
            Next.SetTitle(Resources.Next.ToUpper(), UIControlState.Normal);
            Previous.SetTitle(Resources.Back.ToUpper(), UIControlState.Normal);

            preparePlaceholders();

            if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
            {
                var navigationBarHeight = NavigationController.NavigationBar.Frame.Height;
                AdditionalSafeAreaInsets = new UIEdgeInsets(-navigationBarHeight, 0, 0, 0);
            }

            PageControl.Pages    = ViewModel.NumberOfPages;
            FirstPageLabel.Text  = Resources.OnboardingTrackPageCopy;
            SecondPageLabel.Text = Resources.OnboardingMostUsedPageCopy;
            ThirdPageLabel.Text  = Resources.OnboardingReportsPageCopy;

            Skip.Rx()
            .BindAction(ViewModel.SkipOnboarding)
            .DisposedBy(DisposeBag);

            Next.Rx()
            .BindAction(ViewModel.GoToNextPage)
            .DisposedBy(DisposeBag);

            Previous.Rx()
            .BindAction(ViewModel.GoToPreviousPage)
            .DisposedBy(DisposeBag);

            ScrollView.Rx()
            .DecelerationEnded()
            .Select(_ => (int)(ScrollView.ContentOffset.X / ScrollView.Frame.Width))
            .Subscribe(newPage => ViewModel?.ChangePage(newPage))
            .DisposedBy(DisposeBag);

            ViewModel.BackgroundColor
            .Select(color => color.ToNativeColor())
            .Subscribe(View.Rx().AnimatedBackgroundColor())
            .DisposedBy(DisposeBag);

            ViewModel.BorderColor
            .Select(color => color.ToNativeColor())
            .Subscribe(PhoneFrame.Rx().AnimatedBackgroundColor())
            .DisposedBy(DisposeBag);

            ViewModel.CurrentPage
            .Select(backgroundImageForPage)
            .Subscribe(image => BackgroundImage.Image = image)
            .DisposedBy(DisposeBag);

            ViewModel.IsLastPage
            .Invert()
            .Subscribe(Skip.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.IsFirstPage
            .Invert()
            .Subscribe(Previous.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.IsTrackPage
            .Subscribe(trackPagePlaceholder.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.IsReportPage
            .Subscribe(reportsPagePlaceholder.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.IsSummaryPage
            .Subscribe(mostUsedPagePlaceholder.Rx().IsVisible())
            .DisposedBy(DisposeBag);

            ViewModel.CurrentPage
            .Subscribe(p => PageControl.CurrentPage = p)
            .DisposedBy(DisposeBag);

            ViewModel.CurrentPage
            .Subscribe(p =>
            {
                var scrollPoint = new CGPoint(ScrollView.Frame.Size.Width * p, 0);
                ScrollView.SetContentOffset(scrollPoint, true);
            })
            .DisposedBy(DisposeBag);
        }
        void ReleaseDesignerOutlets()
        {
            if (FirstPageLabel != null)
            {
                FirstPageLabel.Dispose();
                FirstPageLabel = null;
            }

            if (JumbotronLabel != null)
            {
                JumbotronLabel.Dispose();
                JumbotronLabel = null;
            }

            if (LastPageItems != null)
            {
                LastPageItems.Dispose();
                LastPageItems = null;
            }

            if (Login != null)
            {
                Login.Dispose();
                Login = null;
            }

            if (Next != null)
            {
                Next.Dispose();
                Next = null;
            }

            if (PageControl != null)
            {
                PageControl.Dispose();
                PageControl = null;
            }

            if (PhoneContents != null)
            {
                PhoneContents.Dispose();
                PhoneContents = null;
            }

            if (PhoneFrame != null)
            {
                PhoneFrame.Dispose();
                PhoneFrame = null;
            }

            if (Previous != null)
            {
                Previous.Dispose();
                Previous = null;
            }

            if (ScrollView != null)
            {
                ScrollView.Dispose();
                ScrollView = null;
            }

            if (SecondPageLabel != null)
            {
                SecondPageLabel.Dispose();
                SecondPageLabel = null;
            }

            if (SignUp != null)
            {
                SignUp.Dispose();
                SignUp = null;
            }

            if (Skip != null)
            {
                Skip.Dispose();
                Skip = null;
            }

            if (ThirdPageLabel != null)
            {
                ThirdPageLabel.Dispose();
                ThirdPageLabel = null;
            }

            if (BackgroundImage != null)
            {
                BackgroundImage.Dispose();
                BackgroundImage = null;
            }
        }