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 removesIG
prefix. The new name for Swift clients isListAdapterDelegate
. Andrea Antonioni (#1116) -
IGListKit
has been split intoIGListKit
andIGListDiffKit
for Xcode and Carthage builds. Cocoapods continues to use an all-inclusiveIGListKit
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 exposingUICollectionView
scrolling traits to section controllers viaIGListCollectionContext
. 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)
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 ofNSIndexPath
, instead ofNSIndexPath
, were incorrectly set as objects for the IndexPathMaps. Bofei Zhu (#1205) -
[IGListAdapterUpdater performBatchUpdatesWithCollectionViewBlock:]
and[IGListAdapterUpdater performReloadDataWithCollectionViewBlock:]
clean state and run completion blocks if theirUICollectionView
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 fromIGListReusableViewIdentifier
. Trung Duc (#1223) -
Fixed crash when using
-[IGListCollectionContext dequeueReusableCellOfClass:withReuseIdentifier:forSectionController:atIndex:]
Jeremy Lawrence (3b19cfb) -
Added missing method override to
IGListBindingSectionController
that updates the internalviewModels
array after moving a cell. Dennis Müller (#1262) -
Fixed logic flaw in
[IGListCollectionViewLayout shouldInvalidateLayoutForBoundsChange:]
. Allen Hsu (#1236) -
Fixed crash when calling
[UICollectionView layoutAttributesForSupplementaryElementOfKind...]
withIGListCollectionViewLayout
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)