# Changelog `Parchment` adheres to [Semantic Versioning](http://semver.org/). ## [3.4.0](https://github.com/rechsteiner/Parchment/compare/v3.3.0...v3.4.0) - 2024-04-14 - Update Swift version to 5.10 #705 ## [3.3.0](https://github.com/rechsteiner/Parchment/compare/v3.2.1...v3.3.0) - 2024-02-17 - Set minimum deployment target to iOS 12 #699 - Add privacy manifest file #695 - Update Swift version to 5.9 #700 ## [3.2.1](https://github.com/rechsteiner/Parchment/compare/v3.2.0...v3.2.1) - 2023-03-07 ### Fixes - Fix issue with unsafe flags when using SwiftPM #662 ## [3.2.0](https://github.com/rechsteiner/Parchment/compare/v3.1.0...v3.2.0) - 2022-01-23 ### Fixes - Fix issue with menu insets not updating #619 - Update content size after parent size #623 - Fix SPM linker settings #622 #615 - Update Pods file to support iOS >= 9 #620 ## [3.1.0](https://github.com/rechsteiner/Parchment/compare/v3.0.1...v3.1.0) - 2021-10-16 ### Added - Add support for `pagingContentBackgroundColor` property #592 - Add `contentInteraction` property into `PagingOptions` #593 ### Changes - Support for Xcode 13 #581 #601 - Updated API for SwiftUI wrapper #572 #551 - Drop support for iOS 8 #568 - Remove support for older Swift versions #595 - Improve accessibility of default paging cell #602 ### Fixes - Remove Carthage reference in FRAMEWORK_SEARCH_PATH #569 - Fix wrong page direction when current paging item is out of view #567 - Fix issue with rotation when using SwiftUI wrapper #596 ## [3.0.1](https://github.com/rechsteiner/Parchment/compare/v3.0.0...v3.0.1) - 2020-12-15 ### Fixes - Fix layout issue in PageViewController #543 - Fix crash when using UIColor(patternImage:) #544 ## [3.0.0](https://github.com/rechsteiner/Parchment/compare/v2.4.0...v3.0.0) - 2020-12-03 ### Changes - Custom PageViewController (#468) - RTL language support (#468) ## [2.4.0](https://github.com/rechsteiner/Parchment/compare/v2.3.0...v2.4.0) - 2020-01-06 ### Fixes - Fix PagingTitleCell label horizontal constraints (#480) - Fix regression causing menuInteraction property not to work properly (#486) - Reload data when updating paging items in SwiftUI (#470) ## [2.3.0](https://github.com/rechsteiner/Parchment/compare/v2.2.0...v2.3.0) - 2020-02-04 ### Added - Add support for SwiftUI (#460) - Add support for self-sizing menu cells (#461) ### Fixes - Handle menu background color change after viewDidLoad (#465) ## [2.2.0](https://github.com/rechsteiner/Parchment/compare/v2.1.0...v2.2.0) - 2020-21-03 ### Added - Add delegate method when selecting item (#450) ### Changes - Update menu constraints when menuItemSize changes (#449) ## [2.1.0](https://github.com/rechsteiner/Parchment/compare/v2.0.1...v2.1.0) - 2020-11-03 ### Changes - Add option to position menu vertically (#412) - Combine all example targets into single target (#442) ### Fixes - Fix missing import causing SwiftPM to fail (#420) - Fix memory leak occurring when configuring size cache (#433) - Fix issue with initial selection not being set (#438) - Fix regression causing indicator not to animate (#441) - Fix issues with invalidation of size cache (#444) ## [2.0.1](https://github.com/rechsteiner/Parchment/compare/v2.0.0...v2.0.1) - 2020-08-02 ### Fixes - Remove unused `FixedPagingViewController` file to fix xcodebuild. ## [2.0.0](https://github.com/rechsteiner/Parchment/compare/v1.7.0...v2.0.0) - 2020-08-02 See releases for more details: [https://github.com/rechsteiner/Parchment/releases/tag/v2.0.0]() ### Changes - Removed `FixedPagingViewController` - Removed generics (#285) - Moved size delegate into separate protocol - Replaced `menuItemSource` with `register(cellClass:)` - Updated naming of data sources ## [1.7.0](https://github.com/rechsteiner/Parchment/compare/v1.6.0...v1.7.0) - 2019-26-09 ### Fixes - Update to Swift 5 and Xcode 10.2 #339 - Fix issue changing selection when view is not visible #371 - Fix unbalanced appearance transitions #373 - Fix issues when compiled as SPM dependency (Xcode 11) (#386) ### Added - Add support for Accio as dependency manager #345 ## [1.6.0](https://github.com/rechsteiner/Parchment/compare/v1.5.0...v1.6.0) - 2019-03-03 ### Fixes - Forward appearance methods from EMPageViewController #306 - Fix indicator insets with only one item #307 ### Added - Add method for reloading menu #312 ## [1.5.0](https://github.com/rechsteiner/Parchment/compare/v1.4.1...v1.5.0) - 2018-11-18 ### Fixes - Include vertical insets for indicator view #271 - Remove development team from Parchment target #280 - Update indicator and border views when changing options #245 - Fix issue with width delegate not being called #244 - Fix issue with invalidating collection view layout #240 ## [1.4.1](https://github.com/rechsteiner/Parchment/compare/v1.4.0...v1.4.1) - 2018-08-15 ### Fixes - Fix issue with reloadData causing a crash #230 ## [1.4.0](https://github.com/rechsteiner/Parchment/compare/v1.3.0...v1.4.0) - 2018-08-11 ### Changes - Upgrade to Swift 4.2 #228 ### Added - Add option for registering cells from NIB #227 ## [1.3.0](https://github.com/rechsteiner/Parchment/compare/v1.2.0...v1.3.0) - 2018-05-19 ### Changes - Add version checks to support Swift >=3.2 #190, #184 ### Fixes - Fix issue with indicator/border class was not registered #191 - Fix issue with reloading data when view controllers did not change #201 ## [1.2.0](https://github.com/rechsteiner/Parchment/compare/v1.1.0...v1.2.0) - 2018-04-15 ### Changes - Upgrade to Swift 4.1 #171 - Prevent unnecessary view controller initializations #160 ### Fixes - Fix issues with reloading data #157 - Fix issue with clearing all items in page view controller (a5759ba) - Fix issue where willScrollToItem delegate was not called #173 - Fix layout bug with cell heights when using width delegate #155 ## [1.1.0](https://github.com/rechsteiner/Parchment/compare/v1.0.3...v1.1.0) - 2018-03-25 ### Added - Add method for reloading data without passing initial item (8ebd931) - Add option for selected font #143 ### Fixes - Fix issue with reloading data when using PagingViewControllerDataSource (07641e2) - Fix integer overflow causing crash in UnplashExample #140 ## [1.0.3](https://github.com/rechsteiner/Parchment/compare/v1.0.2...v1.0.3) - 2018-03-01 ### Fixes - Fix issue where size delegate was not called #135 ## [1.0.2](https://github.com/rechsteiner/Parchment/compare/v1.0.1...v1.0.2) - 2018-02-22 ### Changes - Update default background color for menu items #131 ## [1.0.1](https://github.com/rechsteiner/Parchment/compare/v1.0.0...v1.0.1) - 2018-02-03 ### Fixes - Fix issue with selecting items programatically #125 - Fix wrong color on collection view background #126 - Fix issue with menu items being clipped #127 ## [1.0.0](https://github.com/rechsteiner/Parchment/compare/v0.9.0...v1.0.0) - 2018-01-29 This release introduces a lot of breaking changes, a bunch of new features and a couple of bug fixes. Here are the most notable changes, with a full list of changes below. ### Removed `PagingOptions` initializer #98 All configuration is now moved into properties on the `PagingViewController` class. You no longer have to initialize a `PagingViewController` with an instance conforming to the `PagingOptions` protocol. This reduces the boilerplate of having to create a separate options struct when you just need to override a single value. It also means you can change the options after the `PagingViewController` has been initialized. All the properties on the `PagingTheme` protocol has also moved into separate properties on `PagingViewController`. **Before:** ```Swift struct Theme: PagingTheme { let textColor: UIColor = .red } struct Options: PagingOptions { let theme: PagingTheme = Theme() let menuItemSize: PagingMenuItemSize = .fixed(width: 100, height: 40) } let pagingViewController = PagingViewController(options: Options()) ``` **After:** ```Swift let pagingViewController = PagingViewController() pagingViewController.menuItemSize = .fixed(width: 100, height: 40) pagingViewController.textColor = .red ``` ### Renamed data source #99 The current data source protocol has been renamed to `PagingViewControllerInfiniteDataSource` and moved into the property called `infiniteDataSource`. ### Added new data source #99 A new `PagingViewControllerDataSource` protocol has been added that makes it easier to set up a custom data source if you have a fixed number of view controllers. To use the new data source, you only need to return the total number of view controllers as well as the view controller and `PagingItem` for a given index. The new data source replaces the existing `dataSource` property. **Example:** ```Swift extension ViewController: PagingViewControllerDataSource { func numberOfViewControllers(in: PagingViewController) -> Int { return items.count } func pagingViewController(_ pagingViewController: PagingViewController, viewControllerForIndex index: Int) -> UIViewController { return ItemViewController(item: items[index]) } func pagingViewController(_ pagingViewController: PagingViewController, pagingItemForIndex index: Int) -> T { return items[index] as! T } } ... pagingViewController.dataSource = self ``` ### Updated delegate protocol #100 Three new delegate methods have been added to the `PagingViewControllerDelegate` protocol. You can now be notified before, during and after the user navigates to another view controller: ```Swift protocol PagingViewControllerDelegate: class { func pagingViewController( _ pagingViewController: PagingViewController, isScrollingFromItem currentPagingItem: T, toItem upcomingPagingItem: T?, startingViewController: UIViewController, destinationViewController: UIViewController?, progress: CGFloat) func pagingViewController( _ pagingViewController: PagingViewController, willScrollToItem pagingItem: T, startingViewController: UIViewController, destinationViewController: UIViewController) func pagingViewController( _ pagingViewController: PagingViewController, didScrollToItem pagingItem: T, startingViewController: UIViewController?, destinationViewController: UIViewController, transitionSuccessful: Bool) func pagingViewController( _ pagingViewController: PagingViewController, widthForPagingItem pagingItem: T, isSelected: Bool) -> CGFloat? } ``` The `widthForPagingItem:` delegate has been changed to return `CGFloat?` instead of `CGFloat` (See: #100). The default implementation will return nil. ### Removed `FixedPagingViewControllerDelegate` protocol #100 The `FixedPagingViewControllerDelegate` protocol is replaced by the `PagingViewControllerDelegate` protocol. The new delegate does not include the index for the paging items, but you can get the current index from the `PagingIndexItem` like this: ```Swift extension ViewController: PagingViewControllerDelegate { func pagingViewController(_ pagingViewController: PagingViewController, didScrollToItem pagingItem: T, startingViewController: UIViewController?, destinationViewController: UIViewController, transitionSuccessful: Bool) { if let indexItem = pagingItem as? PagingIndexItem { print("index: ", indexItem.index) } } } ``` ### Added - Add option to always center selected menu item #101 - Allow subclassing the collection view layout #104 - Add empty implementations of collection view delegate methods (4840483) - Add option to disable content interaction #113 - Add option for selected background color #114 - Add method for selecting paging items based on index #117 ### Changed - Rename selectPagingItem to select(pagingItem:) #105 - Make PagingState property public #107 - Make PagingItems struct public #108 - Make PagingState extension properties public (f842a7b) - Make indicator layout attributes open to allow subclassing (7c35acc) - Change collection view delegate methods to open (68b125b) - Replace PagingTheme with PagingOptions #111 - Rename `headerBackgroundColor` to `menuBackgroundColor` #116 ### Fixes - Fix performance issue with updating content offset #106 - Set background color for paging cell based on options (1a70bd6) - Fix layout calculation when using transforms #102 - Account for menu spacing when generating items #103 - Fix bug with animation when selecting items (73913f) ## [0.9.0](https://github.com/rechsteiner/Parchment/compare/v0.8.0...v0.9.0) - 2017-12-25 ### Added - Add method for reloading data #94 - Allow setting different width for selected cell #85 ## [0.8.0](https://github.com/rechsteiner/Parchment/compare/v0.7.0...v0.8.0) - 2017-11-19 ### Fixes - Fix selecting paging items before view appears #79 - Fix issues with safe area insets #81 ## [0.7.0](https://github.com/rechsteiner/Parchment/compare/v0.6.0...v0.7.0) - 2017-11-07 ### Changes - Change access for EMPageViewController delegate method #72 - Improve performance by using manual frames for menu cells #68 - Add option to customize indicator and border view #67 - Update documentation #60 ## [0.6.0](https://github.com/rechsteiner/Parchment/compare/v0.5.0...v0.6.0) - 2017-09-25 ### Changes - Upgrade to Swift 4.0 #54 ### Fixes - Fix bug where selecting items was not working #55 ## [0.5.0](https://github.com/rechsteiner/Parchment/compare/v0.4.0...v0.5.0) - 2017-08-22 ### Added - Add support for scrolling in header #48 ### Changes - Require `PagingItem` to conform to `Hashable` and `Comparable`: [fbd7aff](https://github.com/rechsteiner/Parchment/pull/48/commits/fbd7aff8c1e3ac17dad8644961d073dc49da6a1e) - Use custom collection view layout instead of using `UICollectionViewFlowLayout` [c6f78b4](https://github.com/rechsteiner/Parchment/pull/48/commits/c6f78b4521c4cae56050316ae3ec3ac72fe895ba) ## [0.4.0](https://github.com/rechsteiner/Parchment/compare/v0.3.0...v0.4.0) - 2017-05-04 ### Added - Add delegate for selected items in FixedPagingViewController #46 ### Fixes - Fix issue with delayed rendering #45 ## [0.3.0](https://github.com/rechsteiner/Parchment/compare/v0.2.0...v0.3.0) - 2017-03-12 ### Changes - Allow selectPagingItem to be called before viewDidAppear #32 - Move collection view above paging view #31 ### Fixes - Fixes for EMPageViewController #36 - Fix calculation for transition distance #33 - Fix background color on header view #41 ## [0.2.0](https://github.com/rechsteiner/Parchment/compare/v0.1.2...v0.2.0) - 2017-02-19 ### Added - Add progress value to menu items: #20 - Scroll menu items alongside content: #22 - Option to add spacing to indicator: #27 - Add new icons example project - Add example for loading view controllers from storyboard ## [0.1.2](https://github.com/rechsteiner/Parchment/compare/v0.1.1...v0.1.2) - 2016-12-08 ### Changes - Update to Swift 3.0 #11 - Update public accessors [1f057a9](https://github.com/rechsteiner/Parchment/commit/1f057a94dc8e204343eeb78b9be6f516e1a6af15) ### Fixes - Account for menuInsets when using sizeToFit #8 - Add support for centering fixed width menu items #10 ## [0.1.1](https://github.com/rechsteiner/Parchment/compare/v0.1.0...v0.1.1) - 2016-05-22 ### Changes - Add MIT license #4 ## [0.1.0](https://github.com/rechsteiner/Parchment/compare/0ad346e...v0.1.0) - 2016-05-22 - Inital release