Smooth asynchronous user interfaces for iOS apps.
Switch branches/tags
Clone or download
Permalink
Failed to load latest commit information.
.github Delete GITHUB_RULES.md Apr 14, 2017
AsyncDisplayKit.xcodeproj Fix compilation warnings #trivial (#1132) Sep 20, 2018
AsyncDisplayKit.xcworkspace Check in Xcode 9.3 "workspace checks" file (#868) Apr 4, 2018
CI BuildKite to ignore all markdown files (#517) Aug 17, 2017
InstrumentsTemplates Improve System Trace Implementation #trivial (#368) Jun 19, 2017
Schemas Add an experimental framesetter cache in ASTextNode2 (#1063) Aug 4, 2018
Source Add missing comma in ASExperimentalFeatures #trivial (#1137) Sep 20, 2018
SubspecWorkspaces/ASDKListKit [License] Simplify the Texture license to be pure Apache 2 (removing … Aug 28, 2018
Tests Remove necessity to use view to access rangeController in ASTableNode… Sep 19, 2018
buck-files Support Buck build (#2849) Jan 4, 2017
docs Fix URL for blog about Pinterest (#1105) Sep 8, 2018
examples [License] Simplify the Texture license to be pure Apache 2 (removing … Aug 28, 2018
examples_extra Add missing argument for calling image download completion block (#1106) Sep 15, 2018
plans/LayoutDebugger Layout debugger proposal (#52) Apr 22, 2017
smoke-tests [License] Simplify the Texture license to be pure Apache 2 (removing … Aug 28, 2018
.buckconfig Support Buck build (#2849) Jan 4, 2017
.buckversion Buck: use snapshot_reference_images_path instead of copying images to… Jan 20, 2017
.editorconfig Add .editorconfig Apr 29, 2016
.gitignore Pin OCMock version to 3.4.1 because 3.4.2 has issues (#1038) Jul 18, 2018
.slather.yml [.slather.yml] Add newline to end of file Apr 21, 2015
.travis.yml IGListKit Support II: Electric Boogaloo (#2942) Jan 30, 2017
BUCK Turn off exceptions to reduce binary size (-600KB for arm64) (#1033) Jul 16, 2018
CHANGELOG.md Remove reliance on shared_ptr for ASDisplayNodeLayouts (#1131) Sep 19, 2018
CONTRIBUTING.md [License] Simplify the Texture license to be pure Apache 2 (removing … Aug 28, 2018
Cartfile Update PINCache (#769) Jan 30, 2018
Dangerfile [License] Simplify the Texture license to be pure Apache 2 (removing … Aug 28, 2018
Gemfile Add danger-slack Apr 26, 2017
LICENSE [License] Simplify the Texture license to be pure Apache 2 (removing … Aug 28, 2018
Podfile Pin OCMock version to 3.4.1 because 3.4.2 has issues (#1038) Jul 18, 2018
Podfile.lock Pin OCMock version to 3.4.1 because 3.4.2 has issues (#1038) Jul 18, 2018
README.md [License] Simplify the Texture license to be pure Apache 2 (removing … Aug 28, 2018
Texture.podspec Fix compilation warnings #trivial (#1132) Sep 20, 2018
build.sh Upgrade dangerfile (#810) Feb 26, 2018
run_tests_update_status.sh Add danger (#18) Apr 19, 2017

README.md

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 textureframework@gmail.com to get an invite.

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).