- Add your own contributions to the next release on the line below this with your name.
- [ASTextNode2] Newline character support and truncated line sizing improvement. Kevin Smith. #1193
- [ASScrollNode] A11y support for ASScrollNode. Max Wang. #1188
- [ASDisplayNode.m] Make sure node is loaded before enter visible. Max Wang. #886
- [ASTextNode2] Add improved support for all line-break modes in experimental text node. Kevin Smith. #1150
- [ASExperimentalFeatures.m] Fix mismatch name in experimental features. Max Wang. #1159
- [ASCollectionViewLayoutController] Set default tuning parameters before view is loaded. Max Wang. #1158
- [ASPhotosFrameworkImageRequestTests] Guard photo library with macro for tests. Max Wang. #1147
- [ASDisplayNode] Do not cancel display when in exit hierarchy but let interface state changing to handle it. Max Wang. #1110
- [Breaking][ASDisplayNode] Make interface state delegate protocol required. Max Wang. #1112
- [ASCollectionView] Fix reording of cells manually for iOS 9 & 10. Max Wang. #1081
- [ASDisplayNode] Allow add/remove interface state delegates on background thread. Max Wang. #1090
- [License] Simplify the Texture license to be pure Apache 2 (removing ASDK-Licenses).Scott Goodson #1077
- [ASNetworkImageNode] Allow delegate methods to be called on background thread. Max Wang. #1007
- [ASLayoutTransition] Add support for preserving order after node moves during transitions. (This order defines the z-order as well.) Kevin Smith [#1006]
- [ASDisplayNode] Adds support for multiple interface state delegates. Garrett Moon #979
- [ASDataController] Add capability to renew supplementary views (update map) when size change from zero to non-zero.Max Wang #842
- Make
ASPerformMainThreadDeallocation
visible in C. Adlai Holler - Add snapshot test for astextnode2. Max Wang #935
- Internal housekeeping on the async transaction (rendering) system. Adlai Holler
- Add new protocol
ASLocking
that extendsNSLocking
withtryLock
, and allows taking multiple locks safely. Adlai Holler - Make the main thread ivar deallocation system available to other classes. Plus a little optimization. See
ASMainThreadDeallocation.h
. Adlai Holler #959 - Reduce usage of autorelease pools. Adlai Holler #968
- Clean up unused/unneeded header macros. Adlai Holler
- Clean up C-function
extern
decorators. Adlai Holler - Add an experiment to reduce work involved in collection teardown. Adlai Holler
- Optimize layout flattening, particularly reducing retain/release operations. Adlai Holler
- Create a method to transfer strong C-arrays into immutable NSArrays, reducing retain/release traffic. Adlai Holler
- Remove yoga layout spec, which has been superseded by tighter Yoga integration (
ASDisplayNode+Yoga.h
) - Properly consider node for responder methods Michael Schneider
- Introduce let / var macros and some further cleanup. Michael Schneider #1012
- [IGListKit] Adds missing UIScrollViewDelegate method to DataSource proxy Sergey Pronin
- Fix misleading/scary stack trace shown when an assertion occurs during node measurement Huy Nguyen #1022
- Fix build on 32-bit simulator in Xcode 9.3 and later, caused by
Thread-local storage is not supported on this architecture.
Adlai Holler - Enable locking assertions (and add some more) to improve and enforce locking safety within the framework Huy Nguyen #1024
- Split MapKit, Photos, and AssetsLibrary dependent code into separate subspecs to improve binary size and start time when they're not needed. The default subspec includes all three for backwards compatibility, but this will change in 3.0. When using non-Cocoapods build environments, define
AS_USE_PHOTOS, AS_USE_MAPKIT, AS_USE_ASSETS_LIBRARY
to 1 respectively to signal their use. Adlai Holler - Optimization: Removed an NSMutableArray in flattened layouts. Adlai Holler
- Reduced binary size by disabling exception support (which we don't use.) Adlai Holler
- Create and set delegate for clip corner layers within ASDisplayNode Michael Schneider #1029
- Improve locking situation in ASVideoPlayerNode Michael Schneider #1042
- Optimize ASDisplayNode -> ASNodeController reference by removing weak proxy and objc associated objects. Adlai Holler
- Remove CA transaction signpost injection because it causes more transactions and is too chatty. Adlai Holler
- Optimize display node accessibility by not creating attributed & non-attributed copies of hint, label, and value. Adlai Holler
- Add an experimental feature that reuses CTFramesetter objects in ASTextNode2 to improve performance. Adlai Holler
- Add NS_DESIGNATED_INITIALIZER to ASViewController initWithNode: Michael Schneider #1054
- Optimize text stack by removing unneeded copying. Adlai Holler
- Renamed
accessibleElements
toaccessibilityElements
and removed the re-definition of the property in ASDisplayView. Jia Wern Lim - Remove double scaling of lineHeightMultiple & paragraphSpacing attributes in ASTextKitFontSizeAdjuster. Eric Jensen
- Add a delegate callback for when the framework has initialized. Adlai Holler
- Improve TextNode2 by skipping an unneeded copy during measurement. Adlai Holler
- Improve locking around clearContents Michael Schneider
- Unlock before cleanup and calling out to subclass hooks for animated images. Michael Schneider #1087
- [ASDisplayNode] Fix interface state update for layer backed nodes when layer thrashes (interface coaleascing case).Max Wang. #1111
- [ASPINRemoteImageManager] Add a new API for setting a preconfigured PINRemoteImageManager. Ernest Ma #1124
- Small optimization to the layout spec & yoga layout systems by eliminating array copies. Adlai Holler
- Optimize layout process by removing
ASRectMap
. Adlai Holler - Remove necessity to use view to access rangeController in ASTableNode, ASCollectionNode. Michael Schneider
- Remove display node's reliance on shared_ptr. Adlai Holler
- [ASCollectionView] Fix a crash that is caused by clearing a collection view's data while it's still being used. Huy Nguyen #1154
- Clean up timing of layout tree flattening/ copying of unflattened tree for Weaver. Michael Zuccarino #1157
- Fix crash setting attributed text on multiple threads Michael Schneider
- [ASTextNode2] Ignore certain text alignments while calculating intrinsic size Huy Nguyen #1166
- Fix mismatch in UIAccessibilityAction selector method Michael Schneider #1169
- [ASDisplayNode] Expose default Texture-set accessibility values as properties. Jia Wern Lim #1170
- ASTableNode init method match checks from ASCollectionNode Michael Schneider [#1171]
- Add NSLocking conformance to ASNodeController Michael Schneider[#1179] (TextureGroup#1179)
- Don’t handle touches on additional attributed message if passthrough is enabled Michael Schneider[#1184] (TextureGroup#1184)
- Yoga integration improvements Michael Schneider[#1187] (TextureGroup#1187)
- Correct linePositionModifier behavior Michael Schneider[#1192] (TextureGroup#1192)
- Tweak a11y label aggregation behavior to enable container label overrides Michael Schneider[#1199] (TextureGroup#1199)
- Fix logic cleaning data if delegate / dataSource changes and bring over logic to ASTableView Michael Schneider[#1200] (TextureGroup#1200)
- Standardize the code base on Objective-C++. We will still not leak any C++ into public headers, however. Adlai Holler
- Fix pager node for interface coalescing. Max Wang #877
- [ASTextNode2] Upgrade lock safety by protecting all ivars (including rarely-changed ones).
- User FLT_EPSILON in ASCeilPixelValue and ASFloorPixelValue to help with floating point precision errors when computing layouts for 3x devices. Ricky Cancro #838
- Disable interface colescing and match to pre-colescing interface update behavior Max Wang #862
- [ASDisplayNode] Add safeAreaInsets, layoutMargins and related properties to ASDisplayNode, with full support for older OS versions Yevgen Pogribnyi #685
- [ASPINRemoteImageDownloader] Allow cache to provide animated image. Max Wang #850
- [tvOS] Fixes errors when building against tvOS SDK Alex Hill #728
- [ASDisplayNode] Add unit tests for layout z-order changes (with an open issue to fix).
- [ASWrapperCellNode] Introduce a new class allowing more control of UIKit passthrough cells.
- [ASDisplayNode] Consolidate main thread initialization and allow apps to invoke it manually instead of +load.
- [ASRunloopQueue] Introduce new runloop queue(ASCATransactionQueue) to coalesce Interface state update calls for view controller transitions.
- [ASRangeController] Fix stability of "minimum" rangeMode if the app has more than one layout before scrolling.
- Important ASDisplayNode's cornerRadius is a new thread-safe bridged property that should be preferred over CALayer's. Use the latter at your own risk! Huy Nguyen #749.
- [ASCellNode] Adds mapping for UITableViewCell focusStyle Alex Hill #727
- [ASNetworkImageNode] Fix capturing self in the block while loading image in ASNetworkImageNode. Denis Mororozov #777
- [ASTraitCollection] Add new properties of UITraitCollection to ASTraitCollection. Yevgen Pogribnyi
- [ASRectMap] Replace implementation of ASRectTable with a simpler one based on unordered_map.Scott Goodson #719
- [ASCollectionView] Add missing flags for ASCollectionDelegate Ilya Zheleznikov #718
- [ASNetworkImageNode] Deprecates .URLs in favor of .URL Garrett Moon #699
- [iOS11] Update project settings and fix errors Eke #676
- [ASCornerLayoutSpec] New layout spec class for declarative corner element layout. #657 huangkun
- [ASDisplayNode layout] Fix an issue that causes a pending layout to be applied multiple times. Huy Nguyen #695
- [ASDisplayNode layout] Fix an issue that sometimes causes a node's pending layout to not be applied. Huy Nguyen #792
- [ASScrollNode] Ensure the node respects the given size range while calculating its layout. #637 Huy Nguyen
- [ASScrollNode] Invalidate the node's calculated layout if its scrollable directions changed. Also add unit tests for the class. #637 Huy Nguyen
- Add new unit testing to the layout engine. Adlai Holler #424
- [Automatic Subnode Management] Nodes with ASM enabled now insert/delete their subnodes as soon as they enter preload state, so subnodes can start preloading right away. Huy Nguyen #706
- [ASCollectionNode] Added support for interactive item movement. Adlai Holler
- Added an experimental "no-copy" rendering API. See ASGraphicsContext.h for info. Adlai Holler
- Dropped support for iOS 8. Adlai Holler
- Added a configuration API – a unified place to turn on/off experimental Texture features. See
ASConfiguration.h
for info. Adlai Holler - Breaking Changes to ASNetworkImageNode: Adlai Holler
- Modified
ASImageDownloaderCompletion
to add an optionalid userInfo
field. Your custom downloader can passnil
. - Modified the last argument to
-[ASNetworkImageNodeDelegate imageNode:didLoadImage:info:]
method from a struct to an object of new classASNetworkImageLoadInfo
which includes other metadata about the load operation.
- Modified
- Removed +load static initializer from ASDisplayNode. Adlai Holler
- Optimized ASNetworkImageNode loading and resolved edge cases where the image provided to the delegate was not the image that was loaded. Adlai Holler #778
- Make
ASCellNode
tint color apply to table view cell accessories. Vladyslav Chapaev #764 - Fix ASTextNode2 is accessing backgroundColor off main while sizing / layout is happening. Michael Schneider #794
- Pass scrollViewWillEndDragging delegation through in ASIGListAdapterDataSource for IGListKit integration. [#796](https://github.com/TextureGro
- up/Texture/pull/796)
- Fix UIResponder handling with view backing ASDisplayNode. Michael Schneider #789
- Optimized thread-local storage by replacing pthread_specific with C11 thread-local variables. Adlai Holler #811
- Fixed a thread-sanitizer warning in ASTextNode. Adlai Holler #830
- Fix ASTextNode2 handling background color incorrectly. Adlai Holler #831
- [NoCopyRendering] Improved performance & fixed image memory not being tagged in Instruments. Adlai Holler #833
- Use
NS_RETURNS_RETAINED
macro to make our methods a tiny bit faster. Adlai Holler #843 ASDisplayNode, ASLayoutSpec, and ASLayoutElementStyle
now conform toNSLocking
. They act as recursive locks. Useful locking macros have been added asASThread.h
. Subclasses / client code can lock these objects but should be careful as usual when dealing with locks. Adlai Holler- Introduces
ASRecursiveUnfairLock
as an experiment to improve locking performance. Adlai Holler - Adds an experiment to shorten init time. Adlai Holler
- Adds a check that Texture is compiled with stdc++11 as specified by the podfile. gnu++11 can cause subtle issues that are currently being investigated. Adlai Holler
- Adds an experiment to call ASNetworkImageNode callbacks off main. Garrett Moon
- Prevent UITextView from updating contentOffset while deallocating Michael Schneider
- [ASCollectionNode/ASTableNode] Fix a crash occurs while remeasuring cell nodes. Huy Nguyen #917
- Fix an issue where ASConfigurationDelegate would not call out for "control" users. If set, it now receives events whenever an experimental feature decision point occurs, whether it's enabled or not. Adlai Holler
- [ASDisplayNode] Fix an issue that causes a node to sometimes return an outdated calculated size or size range. Huy Nguyen #808
- Add an experimental deallocation queue implementation that's more efficient. Adlai Holler
- Standardize property declaration style. Adlai Holler
- [ASTableView] Fix an issue that causes table view to use one of a cell's invalid layouts instead of generating a new one. Huy Nguyen #942
- [Xcode 9] Updated to require Xcode 9 (to fix warnings) Garrett Moon
- [ASCollectionView] Improve performance and behavior of rotation / bounds changes. Scott Goodson #431
- [ASCollectionView] Improve index space translation of Flow Layout Delegate methods. Scott Goodson
- [Animated Image] Adds support for animated WebP as well as improves GIF handling. #605 Garrett Moon
- [ASCollectionView] Check if batch fetching is needed if batch fetching parameter has been changed. #624 Garrett Moon
- [ASNetworkImageNode] New delegate callback to tell the consumer whether the image was loaded from cache or download. Adlai Holler
- [Layout] Fixes a deadlock in layout. #638 Garrett Moon
- Updated to be backwards compatible with Xcode 8. Adlai Holler
- [API CHANGES]
ASPerformMainThreadDeallocation
andASPerformBackgroundDeallocation
functions takeid *
instead ofid
and they're now more reliable. Also, in Swift,ASDeallocQueue.sharedDeallocationQueue() -> ASDeallocQueue.sharedDeallocationQueue
. Adlai Holler #651 - [Collection/Table] Added direct support for mapping section indexes between data spaces. Adlai Holler #651
- [ASVideoNode] Fix unreleased time observer. Flo Vouin
- [PINCache] Set a default .byteLimit to reduce disk usage and startup time. #595 Scott Goodson
- [ASNetworkImageNode] Fix deadlock in GIF handling. #582 Garrett Moon
- [ASDisplayNode] Add attributed versions of a11y label, hint and value. #554 Alexander Hüllmandel
- [ASCornerRounding] Introduce .cornerRoundingType: CALayer, Precomposited, or Clip Corners. Scott Goodson #465
- [Yoga] Add insertYogaNode:atIndex: method. Improve handling of relayouts. Scott Goodson
- [ASCollectionNode] Add -isProcessingUpdates and -onDidFinishProcessingUpdates: APIs. #522 Scott Goodson
- [Accessibility] Add .isAccessibilityContainer property, allowing automatic aggregation of children's a11y labels. [#468]Scott Goodson
- [ASImageNode] Enabled .clipsToBounds by default, fixing the use of .cornerRadius and clipping of GIFs. Scott Goodson #466
- Fix an issue in layout transition that causes it to unexpectedly use the old layout Huy Nguyen #464
- Add -[ASDisplayNode detailedLayoutDescription] property to aid debugging. Adlai Holler #476
- Fix an issue that causes calculatedLayoutDidChange being called needlessly. Huy Nguyen #490
- Negate iOS 11 automatic estimated table row heights. Christian Selig #485
- Add content inset and offset bridging properties to ASTableNode and ASCollectionNode. Deprecate related properties and methods in ASTableView and ASCollectionView Huy Nguyen #460 #560
- Remove re-entrant access to self.view when applying initial pending state. Adlai Holler #510
- Small improvements in ASCollectionLayout Huy Nguyen #509 #513 [#562]((TextureGroup#562)
- Fix retain cycle between ASImageNode and PINAnimatedImage Phil Larson #520
- Change the API for disabling logging from a compiler flag to a runtime C function ASDisableLogging(). Adlai Holler #528
- Table and collection views to consider content inset when calculating (default) element size range Huy Nguyen #525
- [ASEditableTextNode] added -editableTextNodeShouldBeginEditing to ASEditableTextNodeDelegate to mirror the corresponding method from UITextViewDelegate. Yan S. #535
- [Breaking] Remove APIs that have been deprecated since 2.0 and/or for at least 6 months Huy Nguyen #529
- [ASDisplayNode] Ensure
-displayWillStartAsynchronously:
and-displayDidFinish
are invoked on rasterized subnodes. Eric Scheers #532 - Fixed a memory corruption issue in the ASImageNode display system. Adlai Holler #555
- [Breaking] Rename ASCollectionGalleryLayoutSizeProviding to ASCollectionGalleryLayoutPropertiesProviding. Besides a fixed item size, it now can provide interitem and line spacings, as well as section inset Huy Nguyen #496 #533
- Deprecate
-[ASDisplayNode displayWillStart]
in favor of-displayWillStartAsynchronously:
Huy Nguyen [#536](https:/ /github.com/TextureGroup/pull/536) - Add support for URLs on ASNetworkImageNode. Garrett Moon
- [ASImageNode] Always dealloc images in a background queue Huy Nguyen #561
- Mark ASRunLoopQueue as drained if it contains only NULLs Cesar Estebanez #558
- Fix crashes caused by failing to unlock or destroy a static mutex while the app is being terminated Huy Nguyen
- Fix an issue where inserting/deleting sections could lead to inconsistent supplementary element behavior. Adlai Holler
- Overhaul logging and add activity tracing support. Adlai Holler
- Fix a crash where scrolling a table view after entering editing mode could lead to bad internal states in the table. Huy Nguyen #416
- Fix a crash in collection view that occurs if batch updates are performed while scrolling Huy Nguyen #378
- Some improvements in ASCollectionView Huy Nguyen #407
- Small refactors in ASDataController Huy Nguyen #443
- [ASCollectionView] Add delegate bridging and index space translation for missing UICollectionViewLayout properties. Scott Goodson
- [ASTextNode2] Add initial implementation for link handling. Scott Goodson #396
- [ASTextNode2] Provide compile flag to globally enable new implementation of ASTextNode: ASTEXTNODE_EXPERIMENT_GLOBAL_ENABLE. Scott Goodson #396
- Add ASCollectionGalleryLayoutDelegate - an async collection layout that makes same-size collections (e.g photo galleries, pagers, etc) fast and lightweight! Huy Nguyen #76 #451
- Fix an issue that causes infinite layout loop in ASDisplayNode after #428 Huy Nguyen #455
- Rename ASCellNode.viewModel to ASCellNode.nodeModel to reduce collisions with subclass properties implemented by clients. Adlai Holler #504
- [Yoga] Rewrite YOGA_TREE_CONTIGUOUS mode with improved behavior and cleaner integration Scott Goodson
- [ASTraitCollection] Convert ASPrimitiveTraitCollection from lock to atomic. Scott Goodson
- Add a synchronous mode to ASCollectionNode, for colletion view data source debugging. Hannah Troisi
- [ASDisplayNode+Layout] Add check for orphaned nodes after layout transition to clean up. #336. Scott Goodson
- Fixed an issue where GIFs with placeholders never had their placeholders uncover the GIF. Garrett Moon
- [Yoga] Implement ASYogaLayoutSpec, a simplified integration strategy for Yoga-powered layout calculation. Scott Goodson
- Fixed an issue where calls to setNeedsDisplay and setNeedsLayout would stop working on loaded nodes. Garrett Moon
- Migrated unit tests to OCMock 3.4 (from 2.2) and improved the multiplex image node tests. Adlai Holler
- Fix CollectionNode double-load issue. This should significantly improve performance in cases where a collection node has content immediately available on first layout i.e. not fetched from the network. Adlai Holler
- Overhaul layout flattening algorithm Huy Nguyen #395.
- [ASTextKitFontSizeAdjuster] Replace use of NSAttributedString's boundingRectWithSize:options:context: with NSLayoutManager's boundingRectForGlyphRange:inTextContainer: Ricky Cancro
- Add support for IGListKit post-removal-of-IGListSectionType, in preparation for IGListKit 3.0.0 release. Adlai Holler #49
- Fix
__has_include
check in ASLog.h Philipp Smorygo - Fix potential deadlock in ASControlNode Garrett Moon
- [Yoga Beta] Improvements to the experimental support for Yoga layout Scott Goodson
- Make cell node
indexPath
andsupplementaryElementKind
atomic so you can read from any thread. Adlai-Holler #49 - Update the rasterization API and un-deprecate it. Adlai Holler#82
- Simplified & optimized hashing code. Adlai Holler #86
- Improve the performance & safety of ASDisplayNode subnodes. Adlai Holler #223
- Move more properties from ASTableView, ASCollectionView to their respective node classes. Adlai Holler
- Remove finalLayoutElement Michael Schneider#96
- Add ASPageTable - A map table for fast retrieval of objects within a certain page Huy Nguyen
- Add new public
-supernodes
,-supernodesIncludingSelf
, and-supernodeOfClass:includingSelf:
methods. Adlai Holler#246 - Improve our handling supernode traversal to avoid loading layers and fix assertion failures you might hit in debug. Adlai Holler#246
- [ASDisplayNode] Pass drawParameter in rendering context callbacks Michael Schneider#248
- [ASTextNode] Move to class method of drawRect:withParameters:isCancelled:isRasterizing: for drawing Michael Schneider#232
- [ASDisplayNode] Remove instance:-drawRect:withParameters:isCancelled:isRasterizing: (https://github.com/maicki)[#232](https://github.com/TextureGroup/Texture/pull/232)
- [ASTextNode] Add an experimental new implementation. See
+[ASTextNode setExperimentOptions:]
. Adlai Holler#259 - [ASVideoNode] Added error reporing to ASVideoNode and it's delegate #260
- [ASCollectionNode] Fixed conversion of item index paths between node & view. Adlai Holler #262
- [Layout] Extract layout implementation code into it's own subcategories Michael Schneider#272
- [Fix] Fix a potential crash when cell nodes that need layout are deleted during the same runloop. Adlai Holler #279
- [Batch fetching] Add ASBatchFetchingDelegate that takes scroll velocity and remaining time into account Huy Nguyen #281
- [Fix] Fix a major regression in our image node contents caching. Adlai Holler #287
- [Fix] Fixed a bug where ASVideoNodeDelegate error reporting callback would crash an app because of not responding to selector. Sergey Petrachkov #291
- [IGListKit] Add IGListKit headers to public section of Xcode project Michael Schneider#286
- [Layout] Ensure -layout and -layoutDidFinish are called only if a node is loaded. Huy Nguyen #285
- [Layout Debugger] Small changes needed for the coming layout debugger Huy Nguyen #337