Beispiel #1
0
 /// <summary>
 /// Called after the controller’s view is loaded into memory.
 /// </summary>
 public override void ViewDidLoad()
 {
     base.ViewDidLoad();
     if (PageNumber == -1)
     {
         View.BackgroundColor = UIColor.Clear;
     }
     else
     {
         View = new PageView(_ViewFrame, _AutoScaleMode, PageNumber);
     }
 }
 /// <summary>
 /// Called after the controller’s view is loaded into memory.
 /// </summary>
 public override void ViewDidLoad()
 {
     base.ViewDidLoad();
     if (PageNumber == -1) {
         View.BackgroundColor = UIColor.Clear;
     } else {
         View = new PageView(_ViewFrame, PageNumber);
     }
 }
 /// <summary>
 /// Sets equal zoomScale for all pages
 /// </summary>
 private void SetPagesEqualZoomScale(PageView pageView, float zoomScale)
 {
     foreach (var view in mPageViews) {
         if (view != pageView) {
             // Set equal zoomScale from all pageViews
             view.ZoomScale = zoomScale;
             // Offset pageView, to it don't overlapped
             view.ContentOffset = CalcDefaultPageViewContentOffset();
         }
     }
 }
        /// <summary>
        /// Opens document page
        /// </summary>
        /// <param name="pageNumber">Document page number</param>
        public virtual void OpenDocumentPage(int pageNumber)
        {
            if (PDFDocument.DocumentHasLoaded && (pageNumber != PDFDocument.CurrentPageNumber)) {
                if ((pageNumber < 1) || (pageNumber > PDFDocument.PageCount)) {
                    return;
                }

                // Set current page
                PDFDocument.CurrentPageNumber = pageNumber;

                // Calc min, max page
                int minValue;
                int maxValue;
                if (PDFDocument.PageCount <= MaxPageViewsCount) {
                    minValue = 1;
                    maxValue = PDFDocument.PageCount;
                } else {
                    minValue = PDFDocument.CurrentPageNumber - 1;
                    maxValue = PDFDocument.CurrentPageNumber + 1;
                    if (minValue < 1) {
                        minValue++;
                        maxValue++;
                    } else if (maxValue > PDFDocument.PageCount) {
                        minValue--;
                        maxValue--;
                    }
                }

                // Create/update page views for displayed pages
                var unusedPageViews = new List<PageView>(mPageViews);
                RectangleF viewRect = GetScrollViewSubViewFrame();
                for (int i = minValue, j = 0; i <= maxValue; i++,j++) {
                    PageView pageView = mPageViews.FirstOrDefault(v => v.PageNumber == i);
                    if (pageView == null) {
                        pageView = new PageView(viewRect, i);
                        pageView.ZoomScale = mCurrentPageView != null ? mCurrentPageView.ZoomScale : pageView.MinimumZoomScale;
                        pageView.ContentOffset = CalcDefaultPageViewContentOffset();
                        pageView.ZoomingEnded += delegate(object sender, ZoomingEndedEventArgs e) {
                            SetPagesEqualZoomScale((PageView)sender, e.AtScale);
                        };
                        mScrollView.AddSubview(pageView);
                        mPageViews.Add(pageView);
                    } else {
                        pageView.Frame = viewRect;
                        pageView.PageNumber = i;
                        unusedPageViews.Remove(pageView);
                    }
                    viewRect = CalcFrameForNextPage(viewRect);
                    if (i == PDFDocument.CurrentPageNumber) {
                        mCurrentPageView = pageView;
                    }
                }
                // Clear unused page views
                foreach (var view in unusedPageViews) {
                    view.RemoveFromSuperview();
                    mPageViews.Remove(view);
                }

                // Update scroll view content offset
                UpdateScrollViewContentOffset();

                // Update PageNumber label
                if (mPageNumberLabel != null) {
                    mPageNumberLabel.Text = string.Format(@"{0}/{1}", PDFDocument.CurrentPageNumber, PDFDocument.PageCount);
                }

                // Update slider position
                if (mSlider != null) {
                    mSlider.Value = PDFDocument.CurrentPageNumber;
                }
            }
        }