Customize iOS annotation inspector color presets

Override the default color presets in the annotation inspector view. Get additional resources by visiting our guide on customizing color presets in iOS.


//
// Copyright © 2016-2025 PSPDFKit GmbH. All rights reserved.
//
// The Nutrient sample applications are licensed with a modified BSD license.
// Please see License for details. This notice may not be removed from this file.
//
import PSPDFKit
import PSPDFKitUI
class PresetCustomizationExample: Example, PDFViewControllerDelegate {
override init() {
super.init()
title = "Preset Customization Example"
contentDescription = "Shows how to override default color presets."
category = .viewCustomization
}
override func invoke(with delegate: ExampleRunnerDelegate) -> UIViewController {
// Configure custom default presets.
let presets = [
ColorPreset(color: UIColor.black),
ColorPreset(color: UIColor.red),
ColorPreset(color: UIColor.orange),
ColorPreset(color: UIColor.blue),
ColorPreset(color: UIColor.purple)
]
let styleManager = SDK.shared.styleManager
let key = Annotation.ToolVariantID(tool: .line)
styleManager.setDefaultPresets(presets, forKey: key, type: .colorPreset)
// NOTE: Users can change the styles in the inspector unless you change
// PSPDFAnnotationStyleViewControllerDelegate.persistsColorPresetChanges.
// Setup controller
let document = AssetLoader.document(for: .welcome)
// Add a sample line
let line = LineAnnotation(point1: CGPoint(x: 50, y: 50), point2: CGPoint(x: 200, y: 200))
document.add(annotations: [line])
let pdfController = PDFViewController(document: document, delegate: self)
return pdfController
}
// MARK: PDFViewControllerDelegate
internal func pdfViewController(_ pdfController: PDFViewController, didConfigurePageView pageView: PDFPageView, forPageAt pageIndex: Int) {
// Preselect the line.
if pageView.pageIndex == 0 {
pageView.selectedAnnotations = pdfController.document?.annotationsForPage(at: 0, type: .line)
}
}
func pdfViewControllerDidDismiss(_ pdfController: PDFViewController) {
// Restore default presets to not affect other examples.
let styleManager = SDK.shared.styleManager
let key = Annotation.ToolVariantID(tool: .line)
styleManager.setDefaultPresets(nil, forKey: key, type: .colorPreset)
}
}

This code sample is an example that illustrates how to use our SDK. Please adapt it to your specific use case.