Esempio n. 1
0
        private void UpdateContentInset()
        {
            var    navBarBottomY = _navBarController.View.Frame.Y / _navBarController.View.Frame.Height;
            nfloat top;

            if (!_extensionController.IsContracted())
            {
                top = _extensionController.View.Frame.Y + _extensionController.View.Bounds.Size.Height;
            }
            else
            {
                top = navBarBottomY;
            }

            UpdateScrollContentInsetTop(top);
        }
Esempio n. 2
0
        private void HandleScrollingEnded(nfloat velocity)
        {
            var minVelocity = 500;

            if (!IsViewControllerVisible() || (_navBarController.IsContracted() && velocity < minVelocity))
            {
                return;
            }

            _resistanceConsumed = 0;

            if (_currentState == HidingNavigationBarState.Contracting || _currentState == HidingNavigationBarState.Expanding || velocity > minVelocity)
            {
                var contracting = _currentState == HidingNavigationBarState.Contracting;

                if (velocity > minVelocity)
                {
                    contracting = false;
                }

                var deltaY = _navBarController.Snap(contracting);
                var tabBarShouldContract = deltaY < 0;
                _tabBarController?.Snap(tabBarShouldContract);

                var newContentOffset = _scrollView.ContentOffset;
                newContentOffset.Y -= deltaY;

                var contentInset = _scrollView.ContentInset;
                var top          = contentInset.Top + deltaY;

                UIView.Animate(0.2, () =>
                {
                    UpdateScrollContentInsetTop(top);
                    _scrollView.ContentOffset = newContentOffset;
                });

                _previousYOffset = nfloat.NaN;
            }
        }