IGListKit v4.0.0 Release Notes

Release Date: 2019-11-21 // over 4 years ago
  • 4.0.0

    🍱 4.0.0 is here! πŸŽ‰πŸŽŠπŸ₯³

    πŸš€ This version has a number of improvements we've been working on for the last year. We're excited for everyone get their hands on the new improvements and features. Thanks so much to all who contributed code, submitted issues, and contributed to discussions around this release!

    πŸ’₯ Breaking Changes

    βž• Added Swift annotation name to IGListAdapterDelegate which removes IG prefix. The new name for Swift clients is ListAdapterDelegate. Andrea Antonioni (#1116)

    βœ‚ Remove support for iOS 8 Ian Perry (#1381)

    πŸ— IGListKit has been split into IGListKit and IGListDiffKit for Xcode and Carthage builds. Cocoapods continues to use an all-inclusive IGListKit podspec. Nate Stedman (#1377)

    βœ‚ Remove coalescanceTime from IGListAdapterUpdate, since it increase crash rate. Zhisheng Huang (2f76e8c)

    All IGListBindingSectionControllerSelectionDelegate methods are now required. Bofei Zhu (#1186)

    ⚑️ Renamed [IGListAdapterUpdatingDelegate listAdapterUpdater:willPerformBatchUpdatesWithCollectionView:] to [IGListAdapterUpdatingDelegate listAdapterUpdater:willPerformBatchUpdatesWithCollectionView:fromObjects:toObjects:listIndexSetResult:] to include more supporting info on updated objects. Jeremy Cohen (b200dda)

    ⚑️ Renamed [IGListAdapterUpdatingDelegatelistAdapterUpdater:collectionView:willCrashWithException:fromObjects:toObjects:updates:] to [IGListAdapterUpdatingDelegatelistAdapterUpdater:collectionView:willCrashWithException:fromObjects:toObjects:diffResult:updates:] to include diff result info. Zhisheng Huang (039e77e)

    βœ‚ Remove IGListStackedSectionController. Hanton Yang (#1355)

    ✨ Enhancements

    βž• Added IGListCollectionScrollingTraits for exposing UICollectionView scrolling traits to section controllers via IGListCollectionContext. Adam Stern (b4c8ea1)

    ⚠ IGListBindingSectionController no longer asserts when reloading the entire section. A warning message is now logged if the entire section is going to be reloaded. Jeff Bailey (#1213)

    βž• Added preferItemReloadsForSectionReloads in IGListAdapterUpdater so that the item updates are invoked with the proper collectionView animation, instead of using the delete+insert section operation when the number of items is unchanged. Zhisheng Huang (f699ea0)

    🐎 Created IGListAdapterPerformanceDelegate for IGListAdapter to be able to measure how long some operations take across all section controllers. For example, how long it takes to dequeue a cell. Maxime Ollivier (4662454)

    ⚑️ Update CocoaPods integration to use the CocoaPods specs CDN Koen Punt (#1386)

    βœ‚ Remove useless system version code Kinarobin (#1386)

    πŸ›  Fixes

    πŸ›  Fixed bug with layouts inconsistency in updateAnimated:completion of IGListBindingSectionController. Qinghua Hong (#1285)

    πŸ›  Fixed bug with -[IGListAdapter scrollToObject:supplementaryKinds:scrollDirection:scrollPosition:animated:] where the content inset(bottom/right) of the collection view was incorrectly being applied to the final offset and was inconsistent with the content inset(top/left) of the collection view being applied. Qinghua Hong (#1284)

    πŸ›  Fixed crash when the data source is nil before calling -[IGListAdapterUpdater performUpdateWithCollectionViewBlock:fromObjects:toObjectsBlock:animated:objectTransitionBlock:completion:]. Zhisheng Huang (6cdd112)

    ⚑️ Experimental fix to get the UICollectionView for batch updating immediately before applying the update. Ryan Nystrom (583efb9)

    πŸ›  Fixed bug with IGListDiff.mm where arrays of NSIndexPath, instead of NSIndexPath, were incorrectly set as objects for the IndexPathMaps. Bofei Zhu (#1205)

    ⚑️ [IGListAdapterUpdater performBatchUpdatesWithCollectionViewBlock:] and [IGListAdapterUpdater performReloadDataWithCollectionViewBlock:] clean state and run completion blocks if their UICollectionView is nil. Brandon Darin (290d592)

    🚚 Ensuring view models with duplicate diff identifiers are removed when view models are first requested by IGListBindingSectionController Adam Stern (a1ee4c1)

    πŸ›  Fixed [IGListAdapterUpdater reloadItemInCollectionView:fromIndexPath:toIndexPath:] does not call delegate when not inside a batch update. Bofei Zhu (#1211)

    βœ… Log instead of assert for duplicate diff identifiers to make code testable. Adam Stern (bee2178)

    βœ‚ Removed nibName argument from IGListReusableViewIdentifier. Trung Duc (#1223)

    πŸ›  Fixed crash when using -[IGListCollectionContext dequeueReusableCellOfClass:withReuseIdentifier:forSectionController:atIndex:] Jeremy Lawrence (3b19cfb)

    βž• Added missing method override to IGListBindingSectionController that updates the internal viewModels array after moving a cell. Dennis MΓΌller (#1262)

    πŸ›  Fixed logic flaw in [IGListCollectionViewLayout shouldInvalidateLayoutForBoundsChange:]. Allen Hsu (#1236)

    πŸ›  Fixed crash when calling [UICollectionView layoutAttributesForSupplementaryElementOfKind...] with IGListCollectionViewLayout and the section controller doesn't actually return a supplementary view Maxime Ollivier (cddb297)

    βž• Added IGListExperimentAvoidLayoutOnScrollToObject to avoid creating off-screen cells when calling [IGListAdapter scrollToObject ...]. Maxime Ollivier (6faddd9)

    βž• Added IGListExperimentFixIndexPathImbalance to test fixing a crash when inserting and deleting the same NSIndexPath multiple times. Maxime Ollivier (7824698)