Some test text!

Search
Hamburger Icon

iOS / Guides / Thumbnail slider

Adding PDF page slider on iOS

The PTThumbnailSliderViewController class allows the user to quickly navigate through a document. When using the slider control, a small page preview pop will be shown on top of the thumbnail slider.

Note: If you are using the new UI, we recommend the PTDocumentSliderViewController class, which displays a scroll indicator for the current scroll position and allows the user to quickly skip through pages.

thumbnail-slider

The thumbnail slider control is part of the Tools library, so make sure you have added the Tools library to your project .

Show a thumbnail slider

To create and set up a thumbnail slider, supply a PTPDFViewCtrl instance to the PTThumbnailSliderViewController designated initializer:

let thumbnailSlider = PTThumbnailSliderViewController(pdfViewCtrl: pdfViewCtrl)

// Set the current view controller as the thumbnail slider's delegate.
thumbnailSlider.delegate = self

// Set up view controller containment.
self.addChild(thumbnailSlider)

self.view.addSubview(thumbnailSlider.view)

// Position thumbnail slider view in superview.
thumbnailSlider.view.translatesAutoresizingMaskIntoConstraints = false

NSLayoutConstraint.activate([
	thumbnailSlider.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
	thumbnailSlider.view.widthAnchor.constraint(equalTo: self.view.widthAnchor),
	thumbnailSlider.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
])

thumbnailSlider.didMove(toParent: self)

Populate with thumbnail images

The thumbnail images shown in the thumbnail slider view controller are generated by the GetThumbAsync: method of the PTPDFViewCtrl class. When ready, the thumbnail images are provided to the pdfviewCtrl's delegate via the pdfViewCtrl:gotThumbAsync:thumbImage: method.

In your class adopting the PTPDFViewCtrlDelegate protocol (usually the same view controller containing the thumbnail slider view controller), add the following:

func pdfViewCtrl(_ pdfViewCtrl: PTPDFViewCtrl!, gotThumbAsync page_num: Int32, thumbImage image: UIImage!) {
    self.thumbnailSlider.setThumbnail(image, forPage: page_num)
}

Customization

The PTThumbnailSliderViewController provides a flexible API for displaying buttons on either side of the slider control. This is possible with the following properties:

It is also possible to remove these buttons by setting the appropriate property to nil.

For example, to show a button to present a PTThumbnailsViewController on the left of the slider, and a button to present a PTNavigationListsViewController on the right:

// add a custom UIBarButtonItem to the left of the thumbnail slider
let leftButton = UIBarButtonItem(image: UIImage(named: "icon.png"), style: .plain, target: self, action: #selector(performAction))
thumbnailSlider.leadingToolbarItem = leftButton

// add an array of UIBarButtonItems to the right of the slider
let rightButton1 = UIBarButtonItem(image: UIImage(named: "icon1.png"), style: .plain, target: self, action: #selector(performAction1))
let rightButton2 = UIBarButtonItem(image: UIImage(named: "icon2.png"), style: .plain, target: self, action: #selector(performAction2))
thumbnailSlider.trailingToolbarItems = [rightButton1, rightButton2]

// To remove all buttons from the left of the slider, set the leadingToolbarItems property to nil:
thumbnailSlider.leadingToolbarItems = nil

The thumbnail slider delegate

The PTThumbnailSliderViewDelegate protocol allows the adopting class (usually the containing view controller, as in this guide) to be notified when the user is actively using the thumbnail slider. The thumbnail slider already handles changing the current page in response to user actions, but the delegate methods can be used to hide or show other content as appropriate.

Get the answers you need: Chat with us