Smooth asynchronous user interfaces for iOS apps.

Overview

Coming from AsyncDisplayKit? Learn more here

Texture

Apps Using Downloads

Platform Languages

Version Carthage compatible License

Installation

Texture is available via CocoaPods or Carthage. See our Installation guide for instructions.

Performance Gains

Texture's basic unit is the node. An ASDisplayNode is an abstraction over UIView, which in turn is an abstraction over CALayer. Unlike views, which can only be used on the main thread, nodes are thread-safe: you can instantiate and configure entire hierarchies of them in parallel on background threads.

To keep its user interface smooth and responsive, your app should render at 60 frames per second — the gold standard on iOS. This means the main thread has one-sixtieth of a second to push each frame. That's 16 milliseconds to execute all layout and drawing code! And because of system overhead, your code usually has less than ten milliseconds to run before it causes a frame drop.

Texture lets you move image decoding, text sizing and rendering, layout, and other expensive UI operations off the main thread, to keep the main thread available to respond to user interaction.

Advanced Developer Features

As the framework has grown, many features have been added that can save developers tons of time by eliminating common boilerplate style structures common in modern iOS apps. If you've ever dealt with cell reuse bugs, tried to performantly preload data for a page or scroll style interface or even just tried to keep your app from dropping too many frames you can benefit from integrating Texture.

Learn More

Getting Help

We use Slack for real-time debugging, community updates, and general talk about Texture. Signup yourself or email [email protected] to get an invite.

Release process

For the release process see the RELEASE file.

Contributing

We welcome any contributions. See the CONTRIBUTING file for how to get involved.

License

The Texture project is available for free use, as described by the LICENSE (Apache 2.0).

Comments
  • [Crash] ASDN::Mutex::~Mutex()

    [Crash] ASDN::Mutex::~Mutex()

    From @dssheng on August 1, 2016 12:17

    Crash at here. using AsyncDisplayKit ~ 1.9.80 ASThread.h line 117

        ~Mutex () {
          ASDISPLAYNODE_THREAD_ASSERT_ON_ERROR(pthread_mutex_destroy (&_m));
        }
    

    crash1

    Copied from original issue: facebookarchive/AsyncDisplayKit#2017

    bug Community Debugging 
    opened by garrettmoon 39
  • [Next release 3.0] Rebrand from AsyncDisplayKit to Texture

    [Next release 3.0] Rebrand from AsyncDisplayKit to Texture

    As discussed in https://github.com/TextureGroup/Texture/pull/1190, let's try smaller change for now.

    As a follow up on https://github.com/TextureGroup/Texture/issues/1045 I decided it's time to do this kinda complicated change.

    More than two years after @garrettmoon introduced on Medium that AsyncDisplayKit is now Texture here, it's time to rename modules, app itself, project and CocoaPods pod.

    This PRs tries to do that.

    The king is dead, long live the king!


    Also included: - migrate all Swift projects to Swift 4.2 as Swift 3 (or Swift 2 in some cases!) is not compatible with latest XCode anymore (Swift 2 examples are not compatible even with XCode 9) - fix podfiles of some projects - fix project settings and imports of some projects

    NOTE:

    Let's please move on on merging as outdated examples help no one. :)

    opened by Kaspik 34
  • Recent master commit causes crash with ASEditableTextNode inside an ASCellNode

    Recent master commit causes crash with ASEditableTextNode inside an ASCellNode

    I am working on the master branch and a recent pod update caused my app to start instant crashing at a new main thread assert in the dealloc method of ASTextKitComponents, which I noticed was added recently in the commit here

    After struggling to find what was causing it for ages, I eventually worked out that it simply seemed to be caused by having an ASEditableTextNode as a child of an ASCellNode in an ASCollectionNode. To confirm this I managed to retro-fit an example Texture project which I created a few weeks ago to demonstrate another issue. I have attached this here:

    TextureGifMemoryBug ASEditableTextNode Crash.zip

    The project was originally created to demonstrate a memory issue using gifs. As such when you run the project you'll see an ASCollectionNode with a lot of gifs. To demonstrate the crash issue discussed above, all you have to do is go into the GifCellNode class and unblock the line of code at the top of layoutSpecThatFits: that says:

    return [ASWrapperLayoutSpec wrapperWithLayoutElement:self.editableTextNode];
    

    This will switch the cells to instead use a simple ASEditableTextNode created in the init method, and as you will see will instantly crash the app on the assert added in the commit noted above.

    @maicki maybe you can help?

    bug PR Open Community Debugging 
    opened by djblake 25
  •  Thread should not hold lock

    Thread should not hold lock

    [Texture Version: p7.4]

    Hi I hope this is the right forum for this but I am getting a Assertion after calling view.layoutIfNeeded() inside a UIView animation block.

    The function works correctly when the keyboard is displaying but in the case where the keyboard dismisses I am getting the failure.

    Code causing the assertion is self.view.layoutIfNeeded() ` UIView.animate(withDuration: animationDuration, delay: 0, options: animationCurve, animations: { [weak self] in

            guard let self = self else { return }
            
            self.additionalSafeAreaInsets.bottom = intersection.height
            self.view.layoutIfNeeded()
        }, completion: { [weak keyboardAwareVC] (completed) in
    
            keyboardAwareVC?.onKeyboardFrameDidChange()
        })
    

    `

    Log from assertion failure. 2019-02-06 07:14:43.665978-0800 Reach[9726:6494563] *** Assertion failure in void ASDN::Mutex::AssertNotHeld()(), /Users/john/Temp Projects/coClient/Pods/Texture/Source/Details/ASThread.h:204 2019-02-06 07:14:43.680439-0800 Reach[9726:6494563] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Thread should not hold lock' *** First throw call stack: ( 0 CoreFoundation 0x000000011268a1bb __exceptionPreprocess + 331 1 libobjc.A.dylib 0x00000001092af735 objc_exception_throw + 48 2 CoreFoundation 0x0000000112689f42 +[NSException raise:format:arguments:] + 98 3 Foundation 0x000000010cd94940 -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:] + 166 4 AsyncDisplayKit 0x000000010ae7ab9d _ZN4ASDN5Mutex13AssertNotHeldEv + 589 5 AsyncDisplayKit 0x000000010aeb2092 -[ASDisplayNode __layout] + 514 6 AsyncDisplayKit 0x000000010adba17c -[_ASDisplayLayer layoutSublayers] + 492 7 QuartzCore 0x000000010f78b9d3 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 395 8 UIKitCore 0x000000011b86e077 -[UIView(Hierarchy) layoutBelowIfNeeded] + 1429 9 Reach 0x0000000106acfa3b $SSo16UIViewControllerC5ReachE46_onKeyboardFrameWillChangeNotificationReceived33_2EBE1202122E2B2013B55245126FDE4ELLyy10Foundation0I0VFyycfU_ + 651 10 Reach 0x0000000106acfe95 $SSo16UIViewControllerC5ReachE46_onKeyboardFrameWillChangeNotificationReceived33_2EBE1202122E2B2013B55245126FDE4ELLyy10Foundation0I0VFyycfU_TA + 37 11 Reach 0x000000010663a45d $SIeg_IeyB_TR + 45 12 UIKitCore 0x000000011b876bf2 +[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:] + 558 13 UIKitCore 0x000000011b8770cf +[UIView(UIViewAnimationWithBlocks) animateWithDuration:delay:options:animations:completion:] + 99 14 Reach 0x0000000106acf60b $SSo16UIViewControllerC5ReachE46_onKeyboardFrameWillChangeNotificationReceived33_2EBE1202122E2B2013B55245126FDE4ELLyy10Foundation0I0VF + 5179 15 Reach 0x0000000106acfbbc $SSo16UIViewControllerC5ReachE46_onKeyboardFrameWillChangeNotificationReceived33_2EBE1202122E2B2013B55245126FDE4ELLyy10Foundation0I0VFTo + 76 16 CoreFoundation 0x00000001125c9bac __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12 17 CoreFoundation 0x00000001125c902f _CFXRegistrationPost + 447 18 CoreFoundation 0x00000001125c8d71 ___CFXNotificationPost_block_invoke + 225 19 CoreFoundation 0x00000001126afae2 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1826 20 CoreFoundation 0x00000001125c8694 _CFXNotificationPost + 964 21 Foundation 0x000000010cdf6589 -[NSNotificationCenter postNotificationName:object:userInfo:] + 66 22 UIKitCore 0x000000011b183016 -[UIInputWindowController postStartNotifications:withInfo:] + 929 23 UIKitCore 0x000000011b185d88 __77-[UIInputWindowController moveFromPlacement:toPlacement:starting:completion:]_block_invoke.1037 + 530 24 UIKitCore 0x000000011b876bf2 +[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:] + 558 25 UIKitCore 0x000000011b877045 +[UIView(UIViewAnimationWithBlocks) _animateWithDuration:delay:options:animations:start:completion:] + 116 26 UIKitCore 0x000000011b1856bc -[UIInputWindowController moveFromPlacement:toPlacement:starting:completion:] + 1695 27 UIKitCore 0x000000011b18dfce -[UIInputWindowController setInputViewSet:] + 1176 28 UIKitCore 0x000000011b184c79 -[UIInputWindowController performOperations:withAnimationStyle:] + 50 29 UIKitCore 0x000000011b20b489 -[UIPeripheralHost(UIKitInternal) setInputViews:animationStyle:] + 1637 30 UIKitCore 0x000000011b2033d6 -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:] + 2352 31 UIKitCore 0x000000011b3c723b -[UIResponder _finishResignFirstResponder] + 267 32 UIKitCore 0x000000011b3c72fd -[UIResponder resignFirstResponder] + 140 33 UIKitCore 0x000000011b6f4dc4 -[UITextView resignFirstResponder] + 93 34 UIKitCore 0x000000011b869c05 -[UIView(Hierarchy) _removeFirstResponderFromSubtree] + 167 35 UIKitCore 0x000000011b86a1b5 __UIViewWillBeRemovedFromSuperview + 72 36 UIKitCore 0x000000011b869fbc -[UIView(Hierarchy) removeFromSuperview] + 95 37 AsyncDisplayKit 0x000000010aec57c1 -[ASDisplayNode _removeFromSupernode:view:layer:] + 177 38 AsyncDisplayKit 0x000000010aec5627 -[ASDisplayNode _removeFromSupernodeIfEqualTo:] + 951 39 AsyncDisplayKit 0x000000010af2166d -[ASLayoutTransition applySubnodeInsertionsAndMoves] + 845 40 AsyncDisplayKit 0x000000010af21318 -[ASLayoutTransition commitTransition] + 72 41 AsyncDisplayKit 0x000000010ae83357 -[ASDisplayNode(ASLayoutTransition) _completeLayoutTransition:] + 215 42 AsyncDisplayKit 0x000000010ae8321f -[ASDisplayNode(ASLayoutTransition) _completePendingLayoutTransition] + 223 43 AsyncDisplayKit 0x000000010ae7c8ec -[ASDisplayNode(ASLayoutInternal) _u_measureNodeWithBoundsIfNecessary:] + 4524 44 AsyncDisplayKit 0x000000010aeb240c -[ASDisplayNode __layout] + 1404 45 AsyncDisplayKit 0x000000010adba17c -[_ASDisplayLayer layoutSublayers] + 492 46 QuartzCore 0x000000010f78b9d3 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 395 47 QuartzCore 0x000000010f7047ca _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 342 48 QuartzCore 0x000000010f73b97e _ZN2CA11Transaction6commitEv + 576 49 QuartzCore 0x000000010f73c6fa _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 76 50 CoreFoundation 0x00000001125eec27 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 51 CoreFoundation 0x00000001125e90be __CFRunLoopDoObservers + 430 52 CoreFoundation 0x00000001125e9751 __CFRunLoopRun + 1537 53 CoreFoundation 0x00000001125e8e11 CFRunLoopRunSpecific + 625 54 GraphicsServices 0x0000000115a321dd GSEventRunModal + 62 55 UIKitCore 0x000000011b39981d UIApplicationMain + 140 56 Reach 0x00000001071ba217 main + 71 57 libdyld.dylib 0x000000011449f575 start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)

    opened by grangej 23
  • [ASTextNode] Truncation issue in text with lineSpacing

    [ASTextNode] Truncation issue in text with lineSpacing

    From @yxztj on August 19, 2016 13:13

    @hannahmbanana Both latest master branch and 1.9.81 are tested. Repro steps:

    1. Create ASTextNode with maximumNumberOfLines of 3
    2. Set attributedText with lineSpacing > 0 (won't repro if = 0)
    3. Set truncation string with the same attributes At last we would get a wrong number of lines. I created a repo to demo: https://github.com/yxztj/ASTextNodeTest

    With ASDK master branch(demo project branch "master"): Expected: screen shot 2016-08-19 at 8 59 51 pm Actual: screen shot 2016-08-19 at 8 59 24 pm

    With ASDK 1.9.81(demo project branch "1.9.81"): At first number of lines are correct. But when scrolling down and up again(text node re-rendered), the issue appears just as in ASDK master branch above. Please let me know if additional information is required.

    Copied from original issue: facebookarchive/AsyncDisplayKit#2105

    bug P2 Needs Unit Testing 
    opened by garrettmoon 23
  • [ASImageNode / PINRemoteImage] Support WebP.

    [ASImageNode / PINRemoteImage] Support WebP.

    From @smyrgl on December 18, 2015 22:2

    I have created a sample project to demonstrate this behavior here: https://github.com/smyrgl/adktest

    So here's what I'm noticing: it seems that in ASCollectionView the memory isn't properly being freed up. This is very easy to see in the sample project: just play around with clicking on items in the collection view (each will push to another collection view) and scroll and watch the memory usage continue to increase. Firing memory warnings will not change this behavior, the memory usage just keeps climbing.

    screen shot 2015-12-18 at 1 53 40 pm

    However if in the ASCellNode I manually implement clearContents like this:

        override func clearContents() {
            super.clearContents()
            imageNode.image = nil
        }
    

    Then memory usage stays under control. Also if I define a custom subclass of ASImageNode that implements clearContents I also get the correct memory behavior:

    class ClearImageNode: ASImageNode {
        override func clearContents() {
            super.clearContents()
            image = nil
        }
    }
    
    screen shot 2015-12-18 at 2 02 07 pm

    I'd be glad to create a diff which adds this to ASImageNode but I am uncertain if there is a gotcha to this change.

    Copied from original issue: facebookarchive/AsyncDisplayKit#955

    enhancement Needs Volunteer 
    opened by garrettmoon 22
  • Allow ASDisplayNode subclasses to modify _contentsScaleForDisplay

    Allow ASDisplayNode subclasses to modify _contentsScaleForDisplay

    Expose content scale for ASImageNodeDrawParameters so that Texture consumers can override content scale in a subclassed ASImageNode.

    We would like to experiment with imposing limits to resource allocation for certain device families. One strategy is to experiment with reducing allocation used by the ASImageNode when preparing its image for draw in the render loop.

    opened by mikezucc 21
  • [IGListKit] Extended IGListKit support for displaying delegates

    [IGListKit] Extended IGListKit support for displaying delegates

    This pull request is related to #834. I'm opening this with a possible solution but also to discuss if that is the best approach for fixing this problem.

    It basically introduces the following improvements when using Texture + IGListKit:

    IGListDisplayDelegate:

    func listAdapter(_ listAdapter: ListAdapter, willDisplay sectionController: ListSectionController)
    func listAdapter(_ listAdapter: ListAdapter, didEndDisplaying sectionController: ListSectionController)
    func listAdapter(_ listAdapter: ListAdapter, willDisplay sectionController: ListSectionController, cell: UICollectionViewCell, at index: Int)
    func listAdapter(_ listAdapter: ListAdapter, didEndDisplaying sectionController: ListSectionController, cell: UICollectionViewCell, at index: Int)
    

    IGListSectionController:

    func didDeselectItem(at index: Int)
    func didHighlightItem(at index: Int)
    func didUnhighlightItem(at index: Int)
    

    Also, I am proposing a rename of two methods because:

    1. collectionNode:willDisplayItemWithNode: don't have the indexPath like UICollectionView's method collectionView:willDisplayCell:forItemAtIndexPath:, although we can get it from the node it might be nil, in that case, it will crash because IGListKit needs a non optional IndexPath and it is asserting for that here.
    2. Most of the ASCollectionNode names as related to UICollectionView and these are not
    // From:
    - (void)collectionNode:(ASCollectionNode *)collectionNode willDisplayItemWithNode:(ASCellNode *)node
    - (void)collectionNode:(ASCollectionNode *)collectionNode didEndDisplayingItemWithNode:(ASCellNode *)node
    
    // To:
    - (void)collectionNode:(ASCollectionNode *)collectionNode willDisplayNode:(ASCellNode *)node forItemAtIndexPath:(NSIndexPath *)indexPath
    - (void)collectionNode:(ASCollectionNode *)collectionNode didEndDisplayingNode:(ASCellNode *)node forItemAtIndexPath:(NSIndexPath *)indexPath
    

    This will not only conform to the UIKit naming but also have a strong indexPath.

    Please let me know what you think and if I am going in the right direction.

    opened by hebertialmeida 18
  • The cell in ASTableNode, ASCollectionNode never dealloc, when number of cells increase, the memory increases all the time.

    The cell in ASTableNode, ASCollectionNode never dealloc, when number of cells increase, the memory increases all the time.

    From @evanxie-cn on March 30, 2017 8:26

    Firstly, thank you very much for creating such amazing framework, it's really so smooth, so fluent.

    When I use ASTableNode/ASCollectionNode, I encountered a memory issue, with the new cell creating, the memory cost will be higher and higher, finally crash the app.

    I uses the Facebook official CatDealsCollectionView sample to test the ASTableNode ASCollectionNode memory issue. Finally I found the cells are never dealloc, eg. we have 10,000 cells, ASTableNode will create 10,000 cells, and these cells are both in memory.

    When you scroll down the cells, the memory will increase a little by a little. If you scroll down and down, the memory cost will reach up several hundred, even over 1 GB, then crash.

    When you scroll down to several thousands cells, then let the iPhone rotate to landscape, the whole table node will block for several seconds, then layout finished, it recovered, then scroll down again, it is still smooth.

    But when memory cost 1.3GB, the app crashed.

    CatDealsCollectionView.zip img_0133

    https://github.com/evanxie-cn/AsyncDisplayKit/blob/master/MemoryCrash.MOV

    Copied from original issue: facebookarchive/AsyncDisplayKit#3231

    opened by garrettmoon 18
  • [Yoga] Implement ASYogaLayoutSpec, a simplified integration strategy for Yoga.

    [Yoga] Implement ASYogaLayoutSpec, a simplified integration strategy for Yoga.

    [If this is merged, it should be in a disabled state - e.g. with the ASAvailability.h flag set to YOGA / 1, enabling the current behavior]

    This approach allows us to avoid any ASDisplayNode.mm integration points. However, it is not yet proven to be possible to achieve correctness with this approach.

    The entry point (to start calculating), and the measurement function inputs, lack the full expressiveness of ASSizeRange; we need to make sure that workarounds like using style.minSize are successful in simulating the behavior of a full Yoga tree.

    opened by appleguy 17
  • Thread-local storage is not supported for the current target + AsyncDisplayKit Framework name

    Thread-local storage is not supported for the current target + AsyncDisplayKit Framework name

    Hey Texture team! I haven't found any issue here (except https://github.com/TextureGroup/Texture/issues/873).

    I have problem with tests target. My main target runs okay on both XCode 9.4 and XCode 10. But tests target on main target is not running because of:

    1. Framework not found
    Ld /Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/ClassDojo.app/ClassDojo normal x86_64 (in target: ClassDojo)
        cd /Users/kaspik/Documents/Vyvoj/STRV/dojo-behavior
        export IPHONEOS_DEPLOYMENT_TARGET=9.0
        /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk -L/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator -LVendor -LVendor/DraggableCollectionView -LVendor/MFSideMenu -LVendor/ssdatakit -LVendor/DraggableCollectionView/Helpers -LVendor/DraggableCollectionView/Layout -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator -F/Users/kaspik/Documents/Vyvoj/STRV/dojo-behavior/Vendor -F/Users/kaspik/Documents/Vyvoj/STRV/dojo-behavior -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/AFNetworking -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/AMPopTip -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/Bolts -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/CDDesignSystem -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/CocoaAsyncSocket -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/CocoaLumberjack -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/DeviceUtil -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/EFCountingLabel -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/EZAudio -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/FBSDKCoreKit -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/FLAnimatedImage -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/FirebaseCore -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/FirebaseMessaging -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/GoogleToolboxForMac -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/JDStatusBarNotification -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/JGProgressHUD -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/JSQMessagesViewController -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/JSQSystemSoundPlayer -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/KeychainAccess -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/Kingfisher -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/Layout -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/LogglyLogger-CocoaLumberjack -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/PINCache -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/PINOperation -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/PINRemoteImage-Core-PINCache-iOS -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/PINRemoteImage.default-Core -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/PNChart -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/PaperTrailLumberjack -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/PersistentStreamPlayer -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/PromiseKit -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/Protobuf -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/PubNub -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/SAMKeychain -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/SnapKit -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/SwiftyStoreKit -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/TPCircularBuffer -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/TTTAttributedLabel -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/Texture -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/Tweaks -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/UICollectionViewLeftAlignedLayout -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/UICountingLabel -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/UIFloatLabelTextField -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/UIImageViewModeScaleAspect -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/YYText -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/iRate -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/nanopb -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/pop -F/Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/zipzap-iOS -F/Users/kaspik/Documents/Vyvoj/STRV/dojo-behavior/Pods/Crashlytics/iOS -F/Users/kaspik/Documents/Vyvoj/STRV/dojo-behavior/Pods/Fabric/iOS -F/Users/kaspik/Documents/Vyvoj/STRV/dojo-behavior/Pods/FirebaseAnalytics/Frameworks -F/Users/kaspik/Documents/Vyvoj/STRV/dojo-behavior/Pods/FirebaseInstanceID/Frameworks -F/Users/kaspik/Documents/Vyvoj/STRV/dojo-behavior/Vendor -F/Users/kaspik/Documents/Vyvoj/STRV/dojo-behavior -filelist /Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Intermediates.noindex/ClassDojo.build/Testing-iphonesimulator/ClassDojo.build/Objects-normal/x86_64/ClassDojo.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -rpath -Xlinker @executable_path/Frameworks -mios-simulator-version-min=9.0 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Intermediates.noindex/ClassDojo.build/Testing-iphonesimulator/ClassDojo.build/Objects-normal/x86_64/ClassDojo_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -L/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator -Xlinker -add_ast_path -Xlinker /Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Intermediates.noindex/ClassDojo.build/Testing-iphonesimulator/ClassDojo.build/Objects-normal/x86_64/ClassDojo.swiftmodule -ObjC -lc++ -lsqlite3 -lz -framework AFNetworking -framework AMPopTip -framework AsyncDisplayKit -framework Bolts -framework CDDesignSystem -framework CocoaAsyncSocket -framework CocoaLumberjack -framework Crashlytics -framework DeviceUtil -framework EFCountingLabel -framework EZAudio -framework FBSDKCoreKit -framework FLAnimatedImage -framework Fabric -framework FirebaseAnalytics -framework FirebaseCore -framework FirebaseCoreDiagnostics -framework FirebaseInstanceID -framework FirebaseMessaging -framework FirebaseNanoPB -framework Foundation -framework GoogleToolboxForMac -framework JDStatusBarNotification -framework JGProgressHUD -framework JSQMessagesViewController -framework JSQSystemSoundPlayer -framework KeychainAccess -framework Kingfisher -framework Layout -framework LogglyLogger_CocoaLumberjack -framework PINCache -framework PINOperation -framework PINRemoteImage -framework PNChart -framework PaperTrailLumberjack -framework PersistentStreamPlayer -framework PromiseKit -framework Protobuf -framework PubNub -framework SAMKeychain -framework Security -framework SnapKit -framework StoreKit -framework SwiftyStoreKit -framework SystemConfiguration -framework TPCircularBuffer -framework TTTAttributedLabel -framework Tweaks -framework UICollectionViewLeftAlignedLayout -framework UICountingLabel -framework UIFloatLabelTextField -framework UIImageViewModeScaleAspect -framework UIKit -framework YYText -framework iRate -framework nanopb -framework pop -framework zipzap -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Intermediates.noindex/ClassDojo.build/Testing-iphonesimulator/ClassDojo.build/ClassDojo.app-Simulated.xcent -framework AVFoundation -framework AdSupport -weak_framework UserNotifications -framework Photos -framework Crashlytics -framework Fabric -lsqlite3 -framework AddressBook -framework Social -framework Accounts -framework SystemConfiguration -framework Security -framework MobileCoreServices -framework CoreLocation -framework CFNetwork -framework AudioToolbox -framework UIKit -framework StoreKit -framework CoreFoundation -framework QuartzCore -lz -framework CoreGraphics -framework CoreData -framework Foundation -framework Pods_ClassDojo -Xlinker -dependency_info -Xlinker /Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Intermediates.noindex/ClassDojo.build/Testing-iphonesimulator/ClassDojo.build/Objects-normal/x86_64/ClassDojo_dependency_info.dat -o /Users/kaspik/Library/Developer/Xcode/DerivedData/ClassDojo-atbalbdthvzlqngvkcwmnjpzninu/Build/Products/Testing-iphonesimulator/ClassDojo.app/ClassDojo
    
    ld: framework not found AsyncDisplayKit
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    Mainly issue - ld: framework not found AsyncDisplayKit. I'm not sure what's wrong / what's happening here as my Podfile setup looks okay and works last years without any change (Podfile included below).

    1. Thread-local storage in Texture when running tests on multiple simulators Thread-local storage is not supported for the current target - for example on ASLayoutElement.mm - static _Thread_local __unsafe_unretained ASLayoutElementContext *tls_context;

    Is this because of iOS 9 support? I get it that it's probably related to 32bit simulators, but is it somehow possible to disable them? (only active arch is set to true - more info below). I get this error even when building tests for iPhone X.

    Simplified podfile:

    target 'ClassDojo' do
        
        pod 'Texture', '~> 2.7'
        
        target 'ClassDojo Unit Tests' do
            inherit! :complete
            pod 'OHHTTPStubs/Swift'
            pod 'FBSnapshotTestCase'
        end
        
        target 'ClassDojo UI Tests' do
            inherit! :complete
        end
    end
    
    post_install do |installer_representation|
        installer_representation.pods_project.targets.each do |target|
            
            if target.name == "Tweaks"
                target.build_configurations.each do |config|
                    config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'FB_TWEAK_ENABLED=1']
                end
            end
            
            if target.name == "Texture" then
                target.build_configurations.each do |configuration|
                    if configuration.name.include?("Debug") then
                        configuration.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
                    end
                end
            end
        end
    end
    

    Actually the trick with ONLY_ACTIVE_ARCH if from https://github.com/TextureGroup/Texture/issues/873 but still it didn't help.

    1. My last question is - are you going to rename the framework on CocoaPods to Texture? Right now it's confusing that the pod is Texture but framework in Pods is AsyncDisplaKit and is still AsyncDisplayKit as module in build settings.

    I'm aware that XCode 10 is early beta but still I wanted to submit this so you all are aware of that if it's an issue. Thank you for all your help if you have any ideas! :)

    opened by Kaspik 16
  • Docs: Fix references of ASViewController (non-existent) to ASDKViewController

    Docs: Fix references of ASViewController (non-existent) to ASDKViewController

    Changes documentation references of ASViewController (non-existent) to ASDKViewController.

    As far as I can tell there's no such thing as ASViewController, and CHANGELOG says it was renamed in 3.0.0 (2020-07-15)

    opened by JoeFerrucci 1
  • ASTextNode's attributedText don't support range?

    ASTextNode's attributedText don't support range?

    like: NSMutableAttributedString

    • (void)addAttribute:(NSAttributedStringKey)name value:(id)value range:(NSRange)range;
    • (void)addAttributes:(NSDictionary<NSAttributedStringKey, id> *)attrs range:(NSRange)range;

    code:

    ` -(void)loadTextButton {

    NSString *text = _model.comment == nil ? _model.text : [NSString stringWithFormat:@"%@ %@", _model.text, _model.comment];
    //text
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
    NSRange textRange = NSMakeRange(0, _model.text.length);
    NSDictionary *attributeText = @{NSFontAttributeName: _styleModel.candidateFont, NSForegroundColorAttributeName: _styleModel.currentColorSchema.candidate_text_color};
    [attributedString addAttributes:attributeText range:textRange];
    
    //comment
    if (_model.comment){
        NSRange commentRang = NSMakeRange(textRange.length + 1, _model.comment.length);
        NSDictionary *attributeComment = @{NSFontAttributeName: _styleModel.commentFont,NSForegroundColorAttributeName: _styleModel.currentColorSchema.comment_text_color};
        [attributedString addAttributes:attributeComment range:commentRang];
    }
    [_textButton setAttributedTitle:attributedString forState:UIControlStateNormal];
    

    } `

    bug1

    version:3.1.0

    opened by jimmy54 0
  • Incorrect attributedPlaceholderText behavior for ASEditableTextNode

    Incorrect attributedPlaceholderText behavior for ASEditableTextNode

    Let's say there are two ASEditableTextNode. When user taps Tab key in first node, it will navigate to second node. But problem is that when user starts typing below issue occurred. Placeholder doesn't disappear and ASEditableTextNode worked weired.

    Please refer to this issue. https://github.com/FlowCrypt/flowcrypt-ios/issues/1465

    PS: This issue can be reproduced in simulator or iPad with external keyboard.

    image

    opened by ioanmo226 0
Releases(3.1.0)
  • 3.1.0(Sep 16, 2021)

    This release contains breaking changes!

    Migration Guide

    Changelog

    3.1.0 (2021-09-09)

    Full Changelog

    Fixed bugs:

    • Fix hit point when ASCollectionNode inverted set to true #1781 (bdolman)

    Merged pull requests:

    • [Minor Breaking API] Rename ASNavigationController to ASDKNavigationController to fix name collision #2020 (rcancro)
    • [RTL] Guard access of flipsHorizontallyInOppositeLayoutDirection for iOS >= 11 #2003 (rcancro)
    • [RTL/Batching] Make ASDisplayShouldFetchBatchForScrollView aware of flipped CV layouts #1985 (rcancro)
    • [Layout] Add RTL support to LayoutSpecs #1983 (rcancro)
    • Expand ASExperimentalRangeUpdateOnChangesetUpdate to ASTableView #1979 (rqueue)
    • Docs: Remove Facebook and shift everything around, add Remix by Buffer #1978 (ay8s)
    • Add experiment to ensure ASCollectionView's range controller updates … #1976 (rqueue)
    • Remove trailing semicolons between method parameters and body #1973 (sdefresne)
    • Fix order-dependent ASTextNodeTests #1963 (tjaneczko)
    • Update asdkGram swift sample to swift version 5.3 #1962 (MussaCharles)
    • Fix mutation of variable that is never read #1961 (ZevEisenberg)
    • Remove redundant assignment #1960 (ZevEisenberg)
    • Podfile improvements #1957 (ZevEisenberg)
    • Fix WKWebView Accessibility #1955 (ZevEisenberg)
    • fix missing hidden class #1952 (joprice)
    • use https for slack link #1950 (joprice)
    • Exposes a new option in ASImageDownloaderProtocol to retry image downloads #1948 (chggr)
    • All ASCellNode nodes to be non accessible if needed #1941 (decim92)
    • [ASTextNode2] Make some ASTextNode2 layout files public #1939 (rcancro)
    • Ship ASExperimentalDispatchApply #1924 (nguyenhuy)
    • Fix failing ASConfigurationTests #1923 (nguyenhuy)
    • More on ASDataController's main-thread-only mode #1915 (nguyenhuy)
    • Add an experiment that makes ASDataController to do everything on main thread #1911 (nguyenhuy)
    • Disable text kit lock #1910 (garrettmoon)
    • Do not expose tgmath.h to all clients of Texture #1900 (bolsinga)
    • Call will / did display node for ASTextNode. Fixes #1680 #1893 (garrettmoon)
    • Remove background deallocation helper code #1890 (bolsinga)
    • [Accessibility] Ship ASExperimentalDoNotCacheAccessibilityElements #1888 (rcancro)
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Jul 15, 2020)

    This is the release candidate for a major release with breaking changes!

    Migration Guide

    Changelog

    3.0.0 (2020-07-15)

    Full Changelog

    Merged pull requests:

    3.0.0-rc.2 (2020-06-25)

    Full Changelog

    Merged pull requests:

    3.0.0-rc.1 (2020-06-19)

    Full Changelog

    Merged pull requests:

    • Fix documentation for ASCornerRoundingTypeClipping #1863 (chggr)
    • -[ASNetworkImageNode setURL:resetToDefault:] forget to reset animatedImage #1861 (IvanChan)
    • Add iOS13 UIContextMenu api to ASCommonCollectionDelegate #1860 (IvanChan)
    • [ASDisplayNode] Implement accessibilityElementsHidden #1859 (rcancro)
    • [ASDisplayNode] Implement accessibilityViewIsModal #1858 (rcancro)
    • Reference Image Updates in preparation for iOSSnapshotTestCase 6.2 #1857 (bolsinga)
    • Run the tests with iOS10 and as a framework in preparation of updating snapshot test case. #1856 (bolsinga)
    • Update FBSnapshotTestCase to iOSSnapshotTestCase (=6.2) #1855 (bolsinga)
    • Ship ASExperimentalTraitCollectionDidChangeWithPreviousCollection #1842 (bolsinga)
    • Ship ASExperimentalUnfairLock experiment #1841 (bolsinga)
    • Ship ASExperimentalOOMBackgroundDeallocDisable since it decreases OOMs #1840 (bolsinga)
    • Update Texture Xcode project to 11.4 and fix resulting warnings - 4 #1838 (bolsinga)
    • Update Swift collection view interop example #1837 (drinkius)
    • deprecate ASGraphicsCreateImageWithTraitCollectionAndOptions #1836 (vovasty)
    • Remove Danger from the development workflow #1835 (jparise)
    • Use ASReplaceMethodWithBlock instead of swizzling with a library #1832 (bolsinga)
    • use iOS 13.4.1 and Xcode 11.4.1 for CI #1831 (vovasty)
    • Do not use xcpretty in builds so that CI errors are logged. #1830 (bolsinga)
    • Update to OCMock 3.6 #1829 (bolsinga)
    • Removes unnecessary -tearDown code. #1822 (dmaclach)
    • [Accessibility] Do not exclude elements outside the window’s rect that are subviews of UIScrollView #1821 (rcancro)
    • support cancelation in ASGraphicsCreateImage #1814 (vovasty)
    • [ASDisplayViewAccessibility] A few accessibility improvements #1812 (rcancro)
    • [ASDisplayNode] Allow explicit setting of accessibilityElements #1807 (rcancro)
    • Add nullable to new ASCommonTableViewDelegate methods #1796 (jparise)
    • Context menu iOS 13 API #1795 (uuttff8)
    • resolve background color using system trait collection #1777 (vovasty)
    • Update PINRemoteImage to the latest stable #1773 (mackoj)
    • Prevent crashing during non critical logging at rotation #1770 (foxware00)
    • Pruning ASExperimentalRemoveTextKitInitialisingLock code. #1766 (trufflin)
    • fix calling CALayer out of the main thread #1762 (vovasty)
    • Fix typo #1759 (devxoul)
    • Lint podspec on all pull requests #1758 (nguyenhuy)
    • Only include UIUserInterfaceLevel in iOS target #1757 (nguyenhuy)
    • Link to IGListDiffKit in our IGListKit subspec #1756 (nguyenhuy)
    • Remove references to xcpretty-travis-formatter #1755 (jparise)
    • Add empty ASViewController initializer to facilitate subclassing #1754 (christianselig)
    • Bump up IGListKit version #1749 (ay8s)
    • Improve recursive unfair lock #1742 (Adlai-Holler)
    • Use queue in ASMainSerialQueue #1738 (hanton)
    • Delete unused header in ASRunLoopQueue #1737 (hanton)
    • Simplify push_back GroupNotify #1736 (hanton)
    • [Docs] minor fixes in Layout #1735 (hanton)
    • Delete unused macro in ASControlNode #1734 (hanton)
    • Fix tint color dead lock #1731 #1732 (lkzhao)
    • Fix for images retrieved from the memory cache being reported as disk cache hits. #1722 (darrengyles)
    • [Docs] Update to use ASCornerLayoutSpec for Photo with Outset Icon Overlay #1721 (hanton)
    • Add copy sematic to userInfo property in ASTextRunDelegate #1719 (hanton)
    • Change layoutSizeDifferentFromBounds macro to a BOOL #1718 (hanton)
    • Remove unused sharedDeallocationQueue property #1717 (hanton)
    • modify examples_extra/Shop swift 4.2 Version #1709 (doulos76)
    • Fix element lookup for supplementary attributes. #1707 (craighowarth)
    • Remove duplicate ASPINRemoteImageDownloader #1705 (hanton)
    • deprecate ASGraphicsCreateImageWithOptions #1704 (vovasty)
    • fix typo in ASVideoNodeDelegate protocol #1695 (Eeyore741)
    • Adds new delegate methods to ASCommonTableViewDelegate for swipes #1694 (SashaZolotarev)
    • fix a node background color in non layer baked mode. #1693 (vovasty)
    • use iOS 13.0 and Xcode 11 on CI #1691 (vovasty)
    • Remove build warnings #1681 (hanton)
    • Use backgroundColor ivar instead of property access in traitCollectio… #1678 (rahul-malik)
    • introduction of ASGraphicsCreateImageWithTraitCollectionAndOptions #1675 (vovasty)
    • #1673 - Re-render Clipping Corners when User Interface Style Changes #1674 (shamanskyh)
    • Fix main thread assertion for tint color on text nodes, re-render tint-able nodes on hierarchy changes #1670 (rahul-malik)
    • Fix CFRelease on null variable when using truncationAttributedText #1669 (MikeDonahue)
    • ASImageNode tintColor improvements. #1668 (bolsinga)
    • Use CAEdgeAntialiasingMask instead of unsigned int #1667 (hanton)
    • Node TintColor Tweaks #1666 (bolsinga)
    • Defer image asset regeneration to draw loop #1663 (mikezucc)
    • Use MutexLocker when ASImageNode traits change #1662 (bolsinga)
    • Use lock to access the image renderingMode when tint color changes #1661 (bolsinga)
    • Use standard ivar _ prefix for userInterfaceStyle in ASImageNodeDrawParameters #1660 (bolsinga)
    • Using emplace\_back instead of push\_back for efficiency #1658 (hanton)
    • Fix \_ASAsyncTransaction initialization method #1656 (hanton)
    • use lock in asyncTraitCollectionDidChangeWithPreviousTraitCollection #1651 (vovasty)
    • [GitHub CI] Revert back to Ruby Danger as Danger JS is not working properly #1650 (Kaspik)
    • [Docs] Fix broken link in Layout-Quickstart #1648 (hanton)
    • tests for ASImageNode dynamic tint color #1644 (vovasty)
    • AS::Map function improvement #1642 (hanton)
    • Fix comment typo for showsHorizontalScrollIndicator in ASCollectionNode #1638 (innocarpe)
    • Adds support for new iOS 13 traits #1568 (ay8s)
    • [IGListKit] Extended IGListKit support for displaying delegates #1011 (hebertialmeida)

    sync-base-08-29-19 (2019-08-28)

    Full Changelog

    Merged pull requests:

    sync-base-05-09-19 (2019-05-09)

    Full Changelog

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 3.0.0-rc.2(Jun 25, 2020)

    This is the release candidate for a major release with breaking changes!

    Migration Guide

    Changelog

    3.0.0-rc.2 (2020-06-25)

    Full Changelog

    Merged pull requests:

    3.0.0-rc.1 (2020-06-19)

    Full Changelog

    Merged pull requests:

    • Fix documentation for ASCornerRoundingTypeClipping #1863 (chggr)
    • -[ASNetworkImageNode setURL:resetToDefault:] forget to reset animatedImage #1861 (IvanChan)
    • Add iOS13 UIContextMenu api to ASCommonCollectionDelegate #1860 (IvanChan)
    • [ASDisplayNode] Implement accessibilityElementsHidden #1859 (rcancro)
    • [ASDisplayNode] Implement accessibilityViewIsModal #1858 (rcancro)
    • Reference Image Updates in preparation for iOSSnapshotTestCase 6.2 #1857 (bolsinga)
    • Run the tests with iOS10 and as a framework in preparation of updating snapshot test case. #1856 (bolsinga)
    • Update FBSnapshotTestCase to iOSSnapshotTestCase (=6.2) #1855 (bolsinga)
    • Ship ASExperimentalTraitCollectionDidChangeWithPreviousCollection #1842 (bolsinga)
    • Ship ASExperimentalUnfairLock experiment #1841 (bolsinga)
    • Ship ASExperimentalOOMBackgroundDeallocDisable since it decreases OOMs #1840 (bolsinga)
    • Update Texture Xcode project to 11.4 and fix resulting warnings - 4 #1838 (bolsinga)
    • Update Swift collection view interop example #1837 (drinkius)
    • deprecate ASGraphicsCreateImageWithTraitCollectionAndOptions #1836 (vovasty)
    • Remove Danger from the development workflow #1835 (jparise)
    • Use ASReplaceMethodWithBlock instead of swizzling with a library #1832 (bolsinga)
    • use iOS 13.4.1 and Xcode 11.4.1 for CI #1831 (vovasty)
    • Do not use xcpretty in builds so that CI errors are logged. #1830 (bolsinga)
    • Update to OCMock 3.6 #1829 (bolsinga)
    • Removes unnecessary -tearDown code. #1822 (dmaclach)
    • [Accessibility] Do not exclude elements outside the window’s rect that are subviews of UIScrollView #1821 (rcancro)
    • support cancelation in ASGraphicsCreateImage #1814 (vovasty)
    • [ASDisplayViewAccessibility] A few accessibility improvements #1812 (rcancro)
    • [ASDisplayNode] Allow explicit setting of accessibilityElements #1807 (rcancro)
    • Add nullable to new ASCommonTableViewDelegate methods #1796 (jparise)
    • Context menu iOS 13 API #1795 (uuttff8)
    • resolve background color using system trait collection #1777 (vovasty)
    • Update PINRemoteImage to the latest stable #1773 (mackoj)
    • Prevent crashing during non critical logging at rotation #1770 (foxware00)
    • Pruning ASExperimentalRemoveTextKitInitialisingLock code. #1766 (trufflin)
    • fix calling CALayer out of the main thread #1762 (vovasty)
    • Fix typo #1759 (devxoul)
    • Lint podspec on all pull requests #1758 (nguyenhuy)
    • Only include UIUserInterfaceLevel in iOS target #1757 (nguyenhuy)
    • Link to IGListDiffKit in our IGListKit subspec #1756 (nguyenhuy)
    • Remove references to xcpretty-travis-formatter #1755 (jparise)
    • Add empty ASViewController initializer to facilitate subclassing #1754 (christianselig)
    • Bump up IGListKit version #1749 (ay8s)
    • Improve recursive unfair lock #1742 (Adlai-Holler)
    • Use queue in ASMainSerialQueue #1738 (hanton)
    • Delete unused header in ASRunLoopQueue #1737 (hanton)
    • Simplify push_back GroupNotify #1736 (hanton)
    • [Docs] minor fixes in Layout #1735 (hanton)
    • Delete unused macro in ASControlNode #1734 (hanton)
    • Fix tint color dead lock #1731 #1732 (lkzhao)
    • Fix for images retrieved from the memory cache being reported as disk cache hits. #1722 (darrengyles)
    • [Docs] Update to use ASCornerLayoutSpec for Photo with Outset Icon Overlay #1721 (hanton)
    • Add copy sematic to userInfo property in ASTextRunDelegate #1719 (hanton)
    • Change layoutSizeDifferentFromBounds macro to a BOOL #1718 (hanton)
    • Remove unused sharedDeallocationQueue property #1717 (hanton)
    • modify examples_extra/Shop swift 4.2 Version #1709 (doulos76)
    • Fix element lookup for supplementary attributes. #1707 (craighowarth)
    • Remove duplicate ASPINRemoteImageDownloader #1705 (hanton)
    • deprecate ASGraphicsCreateImageWithOptions #1704 (vovasty)
    • fix typo in ASVideoNodeDelegate protocol #1695 (Eeyore741)
    • Adds new delegate methods to ASCommonTableViewDelegate for swipes #1694 (SashaZolotarev)
    • fix a node background color in non layer baked mode. #1693 (vovasty)
    • use iOS 13.0 and Xcode 11 on CI #1691 (vovasty)
    • Remove build warnings #1681 (hanton)
    • Use backgroundColor ivar instead of property access in traitCollectio… #1678 (rahul-malik)
    • introduction of ASGraphicsCreateImageWithTraitCollectionAndOptions #1675 (vovasty)
    • #1673 - Re-render Clipping Corners when User Interface Style Changes #1674 (shamanskyh)
    • Fix main thread assertion for tint color on text nodes, re-render tint-able nodes on hierarchy changes #1670 (rahul-malik)
    • Fix CFRelease on null variable when using truncationAttributedText #1669 (MikeDonahue)
    • ASImageNode tintColor improvements. #1668 (bolsinga)
    • Use CAEdgeAntialiasingMask instead of unsigned int #1667 (hanton)
    • Node TintColor Tweaks #1666 (bolsinga)
    • Defer image asset regeneration to draw loop #1663 (mikezucc)
    • Use MutexLocker when ASImageNode traits change #1662 (bolsinga)
    • Use lock to access the image renderingMode when tint color changes #1661 (bolsinga)
    • Use standard ivar _ prefix for userInterfaceStyle in ASImageNodeDrawParameters #1660 (bolsinga)
    • Using emplace\_back instead of push\_back for efficiency #1658 (hanton)
    • Fix \_ASAsyncTransaction initialization method #1656 (hanton)
    • use lock in asyncTraitCollectionDidChangeWithPreviousTraitCollection #1651 (vovasty)
    • [GitHub CI] Revert back to Ruby Danger as Danger JS is not working properly #1650 (Kaspik)
    • [Docs] Fix broken link in Layout-Quickstart #1648 (hanton)
    • tests for ASImageNode dynamic tint color #1644 (vovasty)
    • AS::Map function improvement #1642 (hanton)
    • Fix comment typo for showsHorizontalScrollIndicator in ASCollectionNode #1638 (innocarpe)
    • Adds support for new iOS 13 traits #1568 (ay8s)
    • [IGListKit] Extended IGListKit support for displaying delegates #1011 (hebertialmeida)

    sync-base-08-29-19 (2019-08-28)

    Full Changelog

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 3.0.0-rc.1(Jun 24, 2020)

    This is the release candidate for a major release with breaking changes!

    Change Log

    3.0.0-rc.1 (2020-06-19)

    Full Changelog

    Merged pull requests:

    • Fix documentation for ASCornerRoundingTypeClipping #1863 (chggr)
    • -[ASNetworkImageNode setURL:resetToDefault:] forget to reset animatedImage #1861 (IvanChan)
    • Add iOS13 UIContextMenu api to ASCommonCollectionDelegate #1860 (IvanChan)
    • [ASDisplayNode] Implement accessibilityElementsHidden #1859 (rcancro)
    • [ASDisplayNode] Implement accessibilityViewIsModal #1858 (rcancro)
    • Reference Image Updates in preparation for iOSSnapshotTestCase 6.2 #1857 (bolsinga)
    • Run the tests with iOS10 and as a framework in preparation of updating snapshot test case. #1856 (bolsinga)
    • Update FBSnapshotTestCase to iOSSnapshotTestCase (=6.2) #1855 (bolsinga)
    • Ship ASExperimentalTraitCollectionDidChangeWithPreviousCollection #1842 (bolsinga)
    • Ship ASExperimentalUnfairLock experiment #1841 (bolsinga)
    • Ship ASExperimentalOOMBackgroundDeallocDisable since it decreases OOMs #1840 (bolsinga)
    • Update Texture Xcode project to 11.4 and fix resulting warnings - 4 #1838 (bolsinga)
    • Update Swift collection view interop example #1837 (drinkius)
    • deprecate ASGraphicsCreateImageWithTraitCollectionAndOptions #1836 (vovasty)
    • Remove Danger from the development workflow #1835 (jparise)
    • Use ASReplaceMethodWithBlock instead of swizzling with a library #1832 (bolsinga)
    • use iOS 13.4.1 and Xcode 11.4.1 for CI #1831 (vovasty)
    • Do not use xcpretty in builds so that CI errors are logged. #1830 (bolsinga)
    • Update to OCMock 3.6 #1829 (bolsinga)
    • Removes unnecessary -tearDown code. #1822 (dmaclach)
    • [Accessibility] Do not exclude elements outside the window’s rect that are subviews of UIScrollView #1821 (rcancro)
    • support cancelation in ASGraphicsCreateImage #1814 (vovasty)
    • [ASDisplayViewAccessibility] A few accessibility improvements #1812 (rcancro)
    • [ASDisplayNode] Allow explicit setting of accessibilityElements #1807 (rcancro)
    • Add nullable to new ASCommonTableViewDelegate methods #1796 (jparise)
    • Context menu iOS 13 API #1795 (uuttff8)
    • resolve background color using system trait collection #1777 (vovasty)
    • Update PINRemoteImage to the latest stable #1773 (mackoj)
    • Prevent crashing during non critical logging at rotation #1770 (foxware00)
    • Pruning ASExperimentalRemoveTextKitInitialisingLock code. #1766 (trufflin)
    • fix calling CALayer out of the main thread #1762 (vovasty)
    • Fix typo #1759 (devxoul)
    • Lint podspec on all pull requests #1758 (nguyenhuy)
    • Only include UIUserInterfaceLevel in iOS target #1757 (nguyenhuy)
    • Link to IGListDiffKit in our IGListKit subspec #1756 (nguyenhuy)
    • Remove references to xcpretty-travis-formatter #1755 (jparise)
    • Add empty ASViewController initializer to facilitate subclassing #1754 (christianselig)
    • Bump up IGListKit version #1749 (ay8s)
    • Improve recursive unfair lock #1742 (Adlai-Holler)
    • Use queue in ASMainSerialQueue #1738 (hanton)
    • Delete unused header in ASRunLoopQueue #1737 (hanton)
    • Simplify push_back GroupNotify #1736 (hanton)
    • [Docs] minor fixes in Layout #1735 (hanton)
    • Delete unused macro in ASControlNode #1734 (hanton)
    • Fix tint color dead lock #1731 #1732 (lkzhao)
    • Fix for images retrieved from the memory cache being reported as disk cache hits. #1722 (darrengyles)
    • [Docs] Update to use ASCornerLayoutSpec for Photo with Outset Icon Overlay #1721 (hanton)
    • Add copy sematic to userInfo property in ASTextRunDelegate #1719 (hanton)
    • Change layoutSizeDifferentFromBounds macro to a BOOL #1718 (hanton)
    • Remove unused sharedDeallocationQueue property #1717 (hanton)
    • modify examples_extra/Shop swift 4.2 Version #1709 (doulos76)
    • Fix element lookup for supplementary attributes. #1707 (craighowarth)
    • Remove duplicate ASPINRemoteImageDownloader #1705 (hanton)
    • deprecate ASGraphicsCreateImageWithOptions #1704 (vovasty)
    • fix typo in ASVideoNodeDelegate protocol #1695 (Eeyore741)
    • Adds new delegate methods to ASCommonTableViewDelegate for swipes #1694 (SashaZolotarev)
    • fix a node background color in non layer baked mode. #1693 (vovasty)
    • use iOS 13.0 and Xcode 11 on CI #1691 (vovasty)
    • Remove build warnings #1681 (hanton)
    • Use backgroundColor ivar instead of property access in traitCollectio… #1678 (rahul-malik)
    • introduction of ASGraphicsCreateImageWithTraitCollectionAndOptions #1675 (vovasty)
    • #1673 - Re-render Clipping Corners when User Interface Style Changes #1674 (shamanskyh)
    • Fix main thread assertion for tint color on text nodes, re-render tint-able nodes on hierarchy changes #1670 (rahul-malik)
    • Fix CFRelease on null variable when using truncationAttributedText #1669 (MikeDonahue)
    • ASImageNode tintColor improvements. #1668 (bolsinga)
    • Use CAEdgeAntialiasingMask instead of unsigned int #1667 (hanton)
    • Node TintColor Tweaks #1666 (bolsinga)
    • Defer image asset regeneration to draw loop #1663 (mikezucc)
    • Use MutexLocker when ASImageNode traits change #1662 (bolsinga)
    • Use lock to access the image renderingMode when tint color changes #1661 (bolsinga)
    • Use standard ivar _ prefix for userInterfaceStyle in ASImageNodeDrawParameters #1660 (bolsinga)
    • Using emplace\_back instead of push\_back for efficiency #1658 (hanton)
    • Fix \_ASAsyncTransaction initialization method #1656 (hanton)
    • use lock in asyncTraitCollectionDidChangeWithPreviousTraitCollection #1651 (vovasty)
    • [GitHub CI] Revert back to Ruby Danger as Danger JS is not working properly #1650 (Kaspik)
    • [Docs] Fix broken link in Layout-Quickstart #1648 (hanton)
    • tests for ASImageNode dynamic tint color #1644 (vovasty)
    • AS::Map function improvement #1642 (hanton)
    • Fix comment typo for showsHorizontalScrollIndicator in ASCollectionNode #1638 (innocarpe)
    • Adds support for new iOS 13 traits #1568 (ay8s)
    • [IGListKit] Extended IGListKit support for displaying delegates #1011 (hebertialmeida)

    sync-base-08-29-19 (2019-08-28)

    Full Changelog

    Merged pull requests:

    sync-base-05-09-19 (2019-05-09)

    Full Changelog

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 2.8.1(May 6, 2019)

  • 2.8(Feb 14, 2019)

    2.8 (2019-02-12)

    Full Changelog

    Merged pull requests:

    • Remove duplicate definition of category "YogaDebugging" #1331 (nguyenhuy)
    • Add Yoga layout to ASDKGram Texture cells #1315 (maicki)
    • Remove let and var macros now that we're all-C++ #1312 (Adlai-Holler)
    • Add experiments to skip waiting for updates of collection and table views #1311 (nguyenhuy)
    • [ASCollectionView] Supplementary nodes should not enter ASHierarchyStateRangeManaged. #1310 (appleguy)
    • Fix deprecated implementations warning #1306 (maicki)
    • Improve separation of code for layout method types #1305 (maicki)
    • Fix loading items in ASDKGram IGListKit tab #1300 (maicki)
    • performance spell correction #1298 (wxyong)
    • Add some snapshot tests for ASTextNode2 truncation modes. #1296 (wiseoldduck)
    • Reduce startup time. #1294 (dmaclach)
    • Reduce startup time. #1293 (dmaclach)
    • Reduce startup time. #1292 (dmaclach)
    • Reduce startup time. #1291 (dmaclach)
    • Reduce startup time. #1288 (dmaclach)
    • Add a way to opt out of always-clear-data behavior in ASCollectionView and ASTableView #1284 (nguyenhuy)
    • Copy yogaChildren in accessor method. Avoid using accessor method internally #1283 (maicki)
    • Use cell mode while wrapping supplementary nodes #1282 (maicki)
    • Access thread safe property to avoid assertion #1281 (wiseoldduck)
    • Match AS_USE_VIDEO usage in tests to definitions #1280 (wiseoldduck)
    • Update test imports to use framework import #1279 (maicki)
    • Set automaticallyAdjustsContentOffset to ASTableView when view is load #1278 (strangeliu)
    • Remove UIKit header import in AsyncTransaction file #1275 (zhongwuzw)
    • Disable a11y cache #1274 (wsdwsd0829)
    • Introduce ASCellLayoutMode #1273 (maicki)
    • During yoga layout, escalate directly to yoga root rather than walking up #1269 (Adlai-Holler)
    • Forward hitTest:withEvent and piontInside:withEvent: to node within _ASCollectionViewCell #1268 (maicki)
    • Wrap supplementary node blocks to enable resizing them. #1265 (wiseoldduck)
    • Move Bluebird to new row. #1264 (ay8s)
    • Added Bluebird #1263 (ShihabM)
    • Move assertions so they are valid. #1261 (wiseoldduck)
    • Fix isTruncated logic in ASTextNode2 #1259 (maicki)
    • Documentation typo, "trying" written two times #1258 (tataevr)
    • [ASPrimitiveTraitCollection] Fix ASPrimitiveTraitCollectionMakeDefault and implement containerSize #1256 (rcancro)
    • Yoga debug info #1253 (wsdwsd0829)
    • Avoid using global Mutex variables #1252 (nguyenhuy)
    • Allow setting build.sh SDK and platform w/ env variables #1249 (wiseoldduck)
    • add more delegate methods for monitoring network image node progress #1247 (ernestmama)
    • Start a thrash test suite for the collection node #1246 (mikezucc)
    • Add development docs structure #1245 (garrettmoon)
    • Convert YGUndefined back to CGFLOAT_MAX for Texture layout #1244 (tnorman42)
    • Add way to compile out ASTextNode + TextKit dependencies #1242 (maicki)
    • Add AS_USE_VIDEO flag and subspec for Video #1240 (maicki)
    • Releases/p6.78 #1236 (ernestmama)
    • [ASDisplayNode] Propagate traits before loading a subnode #1234 (rcancro)
    • Correct some block self references to strongSelf #1231 (wiseoldduck)
    • Update image-node.md #1230 (orkhan-huseynov)
    • Have node and controller share lock #1227 (Adlai-Holler)
    • Initialize mutex assertion variables #1226 (Adlai-Holler)
    • Remove CHECK_LOCKING_SAFETY check #1225 (maicki)
    • Clean up our mutex, fix try_lock not hooking into assert mechanism #1219 (Adlai-Holler)
    • Fix warning using __builtin_popcount #1218 (maicki)
    • Fix A11Y for horizontal collection nodes in Texture #1217 (maicki)
    • ASCATransactionQueue interface trashing improvements #1216 (maicki)
    • Fix shouldTruncateForConstrainedSize in ASTextNode2 #1214 (maicki)
    • ASThread: Remove Locker, Unlocker, and SharedMutex #1213 (Adlai-Holler)
    • Cleanup Dangerfile #1212 (nguyenhuy)
    • Rework ASTraitCollection to Fix Warnings and Remove Boilerplate #1211 (Adlai-Holler)
    • Add -Wno-implicit-retain-self to podspec + smaller cleanups #trivial #1209 (maicki)
    • Address compiler warnings #trivial #1207 (Adlai-Holler)
    • Convert the codebase to Objective-C++ #1206 (Adlai-Holler)
    • Add tests for accessibility #1205 (wiseoldduck)
    • Revert #1023 #trivial #1204 (maicki)
    • Follow up cleanup #trivial #1203 (maicki)
    • Add experiment flag to skip layoutIfNeeded in enterPreloadState for ASM nodes #trivial #1201 (maicki)
    • Fix logic cleaning data if delegate / dataSource changes and bring over logic to ASTableView #1200 (maicki)
    • Tweak a11y label aggregation behavior to enable container label overrides #1199 (maicki)
    • Fix shadowed var warning (and add clarity) #trivial #1198 (wiseoldduck)
    • Allow configuring imageCache when initializing ASPINRemoteImageDownloader. #1197 (wiseoldduck)
    • ASTextNode2 to consider both width and height when determining if it is calculating an intrinsic size #1196 (ernestmama)
    • Remove extraneous ";" #trivial #1194 (wiseoldduck)
    • Newline character support and truncated line sizing improvement. #1193 (wiseoldduck)
    • Correct linePositionModifier behavior #1192 (maicki)
    • Move AS_TEXT_ALERT_UNIMPLEMENTED_FEATURE into ASTextNodeCommon #trivial #1191 (maicki)
    • A11y for scrollnode #1188 (wsdwsd0829)
    • Yoga integration improvements #1187 (maicki)
    • Remove unnecessary ASWeakProxy import #trivial #1186 (maicki)
    • Directly use __instanceLock__ to lock / unlock without having to create and destroy a MutextUnlocker #trivial #1185 (maicki)
    • Don’t handle touches on additional attributed message if passthrough is enabled #1184 (maicki)
    • Set the default values for showsVerticalScrollIndicator and showsHorizontalScrollIndicator #trivial #1181 (maicki)
    • Move import of stdatomic to ASRecursiveUnfairLock implementation file #trivial #1180 (maicki)
    • Add NSLocking conformance to ASNodeController #1179 (maicki)
    • Only initialize framework once, avoid multiple across tests #trivial #1178 (maicki)
    • Expose a way to determine if a text node will truncate for a given constrained size #trivial #1177 (maicki)
    • Fix define spaces #trivial #1176 (maicki)
    • Expose test_resetWithConfiguration: for testing #trivial #1175 (maicki)
    • Add way to suppress invalid CollectionUpdateExceptions #trivial #1173 (maicki)
    • Use interface state to manage image loading #trivial #1172 (maicki)
    • ASTableNode init method match checks from ASCollectionNode #1171 (maicki)
    • [ASDisplayNode] Expose default Texture-set accessibility values as properties #1170 (jiawernlim)
    • Fix mismatch in UIAccessibilityAction selector method #1169 (maicki)
    • Small fix in ASTextKitRenderer #trivial #1167 (nguyenhuy)
    • ASTextNode2 to ignore certain text alignments while calculating intrinsic size #1166 (nguyenhuy)
    • Update Jekyll to 3.6.3 #1165 (nguyenhuy)
    • Migrate placeholder example project from 1.0 to 2.x #1164 (ay8s)
    • Update documentation of ASNetworkImageNodeDelegate #trivial #1163 (nguyenhuy)
    • Make ASEditableTextNode accessible to VoiceOver #1162 (ay8s)
    • Mismatch name experimental features #1159 (wsdwsd0829)
    • Set default tuning params #1158 (wsdwsd0829)
    • Clean up timing of layout tree flattening/ copying of unflattened tree for Weaver #1157 (mikezucc)
    • Only clear ASCollectionView's data during deallocation #1154 (nguyenhuy)
    • [ASTextNode2] Add improved support for all line-break modes in experimental text node. #1150 (wiseoldduck)
    • [ASImageNode] Fix a threading issue which can cause a display completion block to never be executed #1148 (nguyenhuy)
    • Guard photo library with macro for tests #1147 (wsdwsd0829)
    • Rollout ASDeallocQueueV2 #trivial #1143 (ernestmama)
    • Fix crash setting attributed text on multiple threads #1141 (maicki)
    • Add missing NS_NOESCAPE attributes in overwritten methods #trivial #1139 (ejensen)
    • Add missing comma in ASExperimentalFeatures #trivial #1137 (nguyenhuy)
    • Add ASExperimentalSkipClearData #trivial #1136 (maicki)
    • Fix RemoteImageDownloader name mismatch #trivial #1134 (ernestmama)
    • Fix compilation warnings #trivial #1132 (ejensen)
    • Remove reliance on shared_ptr for ASDisplayNodeLayouts #1131 (Adlai-Holler)
    • Make yoga & layout specs faster by eliminating some copies #1128 (Adlai-Holler)
    • Remove ASRectMap, which is not worth its own weight #1127 (Adlai-Holler)
    • [ASPINRemoteImageDownloader] Fix +setSharedPreconfiguredRemoteImageManager:'s doc #trivial #1126 (nguyenhuy)
    • Add a method for setting preconfigured PINRemoteImageManager #1124 (ernestmama)
    • Don't copy onDidLoadBlocks #trivial #1123 (Adlai-Holler)
    • Remove use of NSHashTable for interface state delegates #trivial #1122 (Adlai-Holler)
    • Fix typos and minor code cleanups #trivial #1120 (nguyenhuy)
    • Don't setNeedsDisplay on text node 2 measure #trivial #1116 (Adlai-Holler)
    • Don't copy container during ASTextNode2 measure #1115 (Adlai-Holler)
    • Make interface state delegate non optional #1112 (wsdwsd0829)
    • Interface state not update correctly during layer thrash. #1111 (wsdwsd0829)
    • Fix layer backed nodes not update properly #1110 (wsdwsd0829)
    • changelog fix: let / var macros did not make it to 2.7 #1109 (jozsefmihalicza)
    • Improve locking around clearContents #1107 (maicki)
    • Add missing argument for calling image download completion block #trivial #1106 (maicki)
    • Fix URL for blog about Pinterest #1105 (muukii)
    • Remove necessity to use view to access rangeController in ASTableNode, ASCollectionNode #1103 (maicki)
    • Add a -textureDidInitialize delegate callback #1100 (Adlai-Holler)
    • Reuse interface state delegates when calling out #trivial #1099 (Adlai-Holler)
    • Add an explicit cast to satisfy strict compilers #trivial #1098 (Adlai-Holler)
    • Fix a couple typos. #1092 (jtbthethird)
    • #trivial Shouldn't hold the lock while adding subnodes #1091 (garrettmoon)
    • Allow to add interface state delegate in background. #1090 (wsdwsd0829)
    • Fix Typo #1089 (jtbthethird)
    • Add subnode should not be called with the lock held. #trivial #1088 (garrettmoon)
    • Unlock before cleanup and calling out to subclass hooks for animated images. #1087 (maicki)
    • Fix collection editing #1081 (wsdwsd0829)
    • Fix compiler error in ASLocking #trivial #1079 (nguyenhuy)
    • Update showcase to add Wishpoke #1078 (dhatuna)
    • [License] Simplify the Texture license to be pure Apache 2 (removing ASDK-Licenses). #1077 (appleguy)
    • Fix multiple documentation issues #trivial #1073 (maicki)
    • Refactored accessibleElements to accessibilityElements #1069 (jiawernlim)
    • Readability improvements in ASDataController #trivial #1067 (Adlai-Holler)
    • Remove direct ivar access on non-self object to fix mocking case #trivial #1066 (Adlai-Holler)
    • Reduce copying in ASTextNode2 stack #1065 (Adlai-Holler)
    • Add an experimental framesetter cache in ASTextNode2 #1063 (Adlai-Holler)
    • Remove extra string/attributed string creation in accessibility props #1062 (Adlai-Holler)
    • Remove objc association & weak proxy from node -> controller pointer #1061 (Adlai-Holler)
    • Remove CATransaction signposts #1060 (Adlai-Holler)
    • [ASTextNode2] Simplify allocWithZone: + initialize implementation #trivial #1059 (Adlai-Holler)
    • [ASTextNode] Fixes in ASTextKitFontSizeAdjuster #1056 (ejensen)
    • Revert "Optimize drawing code + add examples how to round corners (#996) #1055 (maicki)
    • Add NS_DESIGNATED_INITIALIZER to ASViewController initWithNode: #1054 (maicki)
    • Fix headers in markdown #1053 (Un3qual)
    • Avoid setting frame on a node's backing store while holding its lock #1048 (nguyenhuy)
    • #trivial Add a comment about tiling mode and issue #1046 #1047 (wiseoldduck)
    • Add documentation for rounding corners within Texture #trivial #1044 (maicki)
    • Improve locking situation in ASVideoPlayerNode #1042 (maicki)
    • Revert unreleased layout debug method name change from #1030 #trivial #1039 (Adlai-Holler)
    • Pin OCMock version to 3.4.1 because 3.4.2 has issues #1038 (Adlai-Holler)
    • Fix & update ASCollectionNode constrained size doc. #trivial #1037 (ay8s)
    • Fix warning for ASLayout method override for the designated initializer of the superclass '-init' not found #trivial #1036 (maicki)
    • Fix the bug I introduced in #1030 #trivial #1035 (Adlai-Holler)
    • Turn off exceptions to reduce binary size (-600KB for arm64) #1033 (Adlai-Holler)
    • Turn lock-checking on only when assertions are enabled #trivial #1032 (Adlai-Holler)
    • Remove NSMutableArray for retaining sublayout elements #1030 (Adlai-Holler)
    • Create and set delegate for clip corner layers within ASDisplayNode #1029 (maicki)
    • Split framework dependencies into separate subspecs #1028 (Adlai-Holler)
    • Remove misleading comment and add assertion #trivial #1027 (wiseoldduck)
    • Address warnings in Xcode >= 9.3 about using %zd for NSInteger #trivial #1026 (Adlai-Holler)
    • Fix 32-bit simulator build on Xcode >= 9.3 #1025 (Adlai-Holler)
    • Stricter locking assertions #1024 (nguyenhuy)
    • Make sure -_completePendingLayoutTransition is called without the node's instance lock #trivial #1023 (nguyenhuy)
    • Fix misleading/scary stack trace shown when an assertion occurs during node measurement #1022 (nguyenhuy)
    • Add an introduction for ASCornerLayoutSpec in layout2-layoutspec-types.md #trivial #1021 (huang-kun)
    • Add showsHorizontal(Vertical)ScrollIndicator property applying from pending state #trivial #1016 (maicki)
    • [IGListKit] Adds missing UIScrollViewDelegate method to DataSource proxy #1015 (wannabehero)
    • Introduce let / var macros and some further cleanup #1012 (maicki)
    • Properly consider node for responder methods #1008 (maicki)
    • Background image load api #1007 (wsdwsd0829)
    • Add move detection and support to ASLayoutTransition #1006 (wiseoldduck)
    • Fix warnings and a memory leak #trivial #1003 (maicki)
    • Rewrite Swift Example #1002 (maicki)
    • Remove yoga layout spec, which has been superseded #999 (Adlai-Holler)
    • Optimize drawing code + add examples how to round corners #996 (maicki)
    • Fix typo in containers-asviewcontroller.md #989 (muukii)
    • Create transfer-array method and use it #987 (Adlai-Holler)
    • Add missing instance variables in ASTextNode and warnings cleanup #trivial #984 (maicki)
    • Optimize layout flattening #982 (Adlai-Holler)
    • Changed lost images to existing one. #trivial #981 (tataevr)
    • [texturegroup.org] Use valid link for Upgrade to 2.0 beta 1 page #trivial #980 (mikezucc)
    • Adds support for having multiple interface state delegates. #979 (garrettmoon)
    • Create an experiment to remove extra collection teardown step #975 (Adlai-Holler)
    • Remove unused/unneeded header macros #973 (Adlai-Holler)
    • Standardize "extern" decls on AS_EXTERN #972 (Adlai-Holler)
    • ASConfiguration version check only when have json dict #971 (wsdwsd0829)
    • Pointer check #970 (wsdwsd0829)
    • Reduce usage of autorelease pools #968 (Adlai-Holler)
    • Update showcase to include Apollo for Reddit #967 (christianselig)
    • Fix crash when call needsMainThreadDeallocation on NSProxy instances #trivial #965 (nguyenhuy)
    • Fix name typo #trivial #963 (wsdwsd0829)
    • Generalize the main thread ivar deallocation system #959 (Adlai-Holler)
    • Add support for acquiring multiple locks at once #958 (Adlai-Holler)
    • Clean up async transaction system a bit #955 (Adlai-Holler)
    • Added 'Waplog' to showcase. #953 (malikkuru)
    • Make ASPerformMainThreadDeallocation visible in C #952 (Adlai-Holler)
    Source code(tar.gz)
    Source code(zip)
  • 2.7(May 30, 2018)

    Our first release in a while! A ton of great bug fixes and improvements from @wsdwsd0829 @rcach @ypogribnyi @alexhillc @morozkin @ShogunPhyched @huang-kun as well as @nguyenhuy @garrettmoon @maicki and @appleguy!

    • 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 optional id userInfo field. Your custom downloader can pass nil.
      • Modified the last argument to -[ASNetworkImageNodeDelegate imageNode:didLoadImage:info:] method from a struct to an object of new class ASNetworkImageLoadInfo which includes other metadata about the load operation.
    • 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
    • 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 to NSLocking. They act as recursive locks. Useful locking macros have been added as ASThread.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
    Source code(tar.gz)
    Source code(zip)
  • 2.6(Jan 12, 2018)

    • [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 and ASPerformBackgroundDeallocation functions take id * instead of id 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
    Source code(tar.gz)
    Source code(zip)
  • 2.5.1(Oct 24, 2017)

    Fix all the bugs!

    • [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
    Source code(tar.gz)
    Source code(zip)
  • 2.5(Sep 26, 2017)

    This release fixes a ton of issues, improves iOS 11 support, improves accessibility support, and removes old deprecated APIs.

    • [ASCollectionNode] Add -isProcessingUpdates and -onDidFinishProcessingUpdates: APIs. #522 Scott Goodson
    • [Accessibility] Add .isAccessibilityContainer property, allowing automatic aggregation of children's a11y labels. [#468][Scott Goodson](https://github.com/appleguy)
    • [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]((https://github.com/TextureGroup/Texture/pull/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/Texture/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
    Source code(tar.gz)
    Source code(zip)
  • 2.4(Aug 15, 2017)

    • Rename ASCellNode.viewModel to ASCellNode.nodeModel to reduce collisions with subclass properties implemented by clients. Adlai Holler #504
    • 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
    Source code(tar.gz)
    Source code(zip)
  • 2.3.4(Jun 30, 2017)

    A new release with lots of important fixes!

    • [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
    • Overhaul layout flattening algorithm Huy Nguyen #395.
    • 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
    Source code(tar.gz)
    Source code(zip)
  • 2.3.3(Jun 6, 2017)

    Big release with a bunch of fixes by the community!

    • [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 and supplementaryElementKind 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
    • [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
    Source code(tar.gz)
    Source code(zip)
  • 2.3.2(May 9, 2017)

    2.3.2 is another big release with a bunch of fixes and improvements

    All changes can be found here: https://github.com/TextureGroup/Texture/compare/2.3.1...2.3.2

    A few highlights:

    • A new Tips system with one tip provider which indicates views which are good candidates to become layer backed. #19
    • A new way to asynchronously layout collection views! #3130
    • Cleanup in ASThread. #3269

    Lots of other minor improvements!

    Source code(tar.gz)
    Source code(zip)
  • 2.3.1(Apr 27, 2017)

  • 2.3(Apr 14, 2017)

    2.3 is a big release! Changes can be found here: https://github.com/TextureGroup/Texture/compare/2.2...2.3

    Some highlights:

    • Added support for resuming downloads that were half way finished when they exited the preload range: #3246
    • Added support for IGListKit > 2.1 #3239
    • Significant improvements to locking #3187, #3217, #3218, #3179, #3172, #3159
    • Added support for flexWrap #2914
    • Fixed GIF rendering #3057
    • Fixed issues with text rendering of CJK languages #3026
    Source code(tar.gz)
    Source code(zip)
  • 2.2(Mar 15, 2017)

    This is primarily a bug fix release. Changes can be found here: https://github.com/TextureGroup/Texture/compare/2.1...2.2

    Some highlights:

    • Removed support for iOS 7
    • Upgraded to latest PINRemoteImage (CocoaPods), fixing GIFs: #3057
    • Added an assert to prevent dealloc while visible bugs: #3062
    • Added callback for non-fatal error reporting: #2993
    • Added scrollDirection property on ASScrollNode: #3001
    • Fixed some ASPagerNode issues: #3028
    Source code(tar.gz)
    Source code(zip)
A drop-in universal library helps you to manage the navigation bar styles and makes transition animations smooth between different navigation bar styles

A drop-in universal library helps you to manage the navigation bar styles and makes transition animations smooth between different navigation bar styles while pushing or popping a view controller for all orientations. And you don't need to write any line of code for it, it all happens automatically.

Zhouqi Mo 3.3k Dec 21, 2022
Non-intrusive iOS UI library to implement overlay based interfaces

OverlayContainer is a UI library written in Swift. It makes easier to develop overlay based interfaces, such as the one presented in the Apple Maps, S

Applidium 1k Jan 4, 2023
Provides an iOS view controller allowing a user to draw their signature with their finger in a realistic style.

Swift version now available! Mimicking pen-on-paper signatures with a touch screen presents a difficult set of challenges. The rate touch events are e

Uber Open Source 1.3k Jan 6, 2023
User Interface Library for iOS

Why Sejima Because in modern mobile applications, you often reuse user interface components. To avoid code duplication, we have tried to provide you w

Move Upwards 64 Dec 22, 2022
Peanut is an orginizational application focusing on user customization whithin a simple interface.

Peanut Peanut is an organizational application focusing on user customization within a simple interface. Table of Contents User Features Architecture

Adam Herring 2 Mar 2, 2022
Dump local MacOS user hashes to a hashcat-compatible string.

mimic Dumps local MacOS user hashes to a hashcat-compatible string. Simply uses Objective-C instead of dscl/defaults read or other noisy binaries, to

null 0 Dec 29, 2021
A simple, customizable view for efficiently collecting country information in iOS apps.

CountryPickerView CountryPickerView is a simple, customizable view for selecting countries in iOS apps. You can clone/download the repository and run

Kizito Nwose 459 Dec 27, 2022
Progress and Activity Indicators for iOS apps

Progress Indicators and Activity Views for iOS Apps Features Storyboard compatible, configure apprearance with the property inspector. fully animated,

Alexander Kasimir 101 Nov 13, 2022
UIPheonix is a super easy, flexible, dynamic and highly scalable UI framework + concept for building reusable component/control-driven apps for macOS, iOS and tvOS

UIPheonix is a super easy, flexible, dynamic and highly scalable UI framework + concept for building reusable component/control-driven apps for macOS, iOS and tvOS

Mohsan Khan 29 Sep 9, 2022
It provides UI components such as popover, popup, dialog supporting iOS apps

Overview LCUIComponents is an on-going project, which supports creating transient views appearing above other content onscreen when a control is selec

Linh Chu 7 Apr 8, 2020
Beautiful flag icons for usage in apps and on the web.

FlagKit Beautiful flag icons for usage in apps and on the web. All flags are provided as stand-alone PNG and SVG files. FlagKit also provides an Asset

Bowtie 2.9k Dec 29, 2022
Custom emojis are a fun way to bring more life and customizability to your apps.

Custom emojis are a fun way to bring more life and customizability to your apps. They're available in some of the most popular apps, such as Slack, Di

Stream 244 Dec 11, 2022
Work in progress gallery of controls available to Catalyst apps using Optimized for Mac

Catalyst Controls Gallery Very simple work-in-progress demonstration of many common controls available to Mac Catalyst as of macOS 11. Provided moreso

Steven Troughton-Smith 163 Sep 18, 2022
Create macOS apps with Swift packages instead of Xcode projects

Swift Bundler A Swift Package Manager wrapper that allows the creation of MacOS apps with Swift packages instead of Xcode projects. My motivation is t

null 182 Dec 25, 2022
Oovium's AetherView and other basic UI elements necessary for embedding Oovium in other apps

Oovium's AetherView and other basic UI elements necessary for embedding Oovium in other apps

Joe Charlier 0 Aug 24, 2022
UIStackView replica for iOS 7.x and iOS 8.x

TZStackView A wonderful layout component called the UIStackView was introduced with iOS 9. With this component it is really easy to layout components

Tom van Zummeren 1.2k Oct 10, 2022
Super awesome Swift minion for Core Data (iOS, macOS, tvOS)

⚠️ Since this repository is going to be archived soon, I suggest migrating to NSPersistentContainer instead (available since iOS 10). For other conven

Marko Tadić 306 Sep 23, 2022
A custom stretchable header view for UIScrollView or any its subclasses with UIActivityIndicatorView and iPhone X safe area support for content reloading. Built for iOS 10 and later.

Arale A custom stretchable header view for UIScrollView or any its subclasses with UIActivityIndicatorView support for reloading your content. Built f

Putra Z. 43 Feb 4, 2022
BulletinBoard is an iOS library that generates and manages contextual cards displayed at the bottom of the screen

BulletinBoard is an iOS library that generates and manages contextual cards displayed at the bottom of the screen. It is especially well

Alexis (Aubry) Akers 5.3k Jan 2, 2023