* [ASDisplayNode] Add safeAreaInsets, layoutMargins and related properties to ASDisplayNode
* Add layoutMargins bridged to the underlying view
* Add safeAreaInsets bridged to the underlying view
* Add fallback calculation of safeAreaInsets for old iOS versions
* Add automaticallyRelayoutOnSafeAreaChanges and automaticallyRelayoutOnLayoutMarginsChanges properties
* Add additionalSafeAreaInsets property to ASViewController for compatibility with old iOS versions
* Provide safeAreaInsets for layer-backed nodes.
This also fixes tests.
* Fix crash when insetsLayoutMarginsFromSafeArea is set from a background thread
* Changes requested at code review:
* Update documentation for layoutMargins and safeAreaInsets properties. Suggest that users set the automaticallyRelayout* flags to ensure that their layout is synchronized to the margin's values.
* Fix accessing ASDisplayNode internal structures without a lock.
* Add shortcut in -[ASDisplayNode _fallbackUpdateSafeAreaOnChildren] to skip a child when possible.
* Add shortcut in ASViewController to avoid fallback safe area insets recalculation in iOS 11. Fix fallback safe area insets recalculation when the additionalSafeAreaInsets are set.
* Add debug check that a view controller's node is never reused without its view controller, so the viewControllerRoot flag value is always consistent.
* Use getters instead of reading ivars directly in -layoutMarginsDidChange and -safeAreaInsetsDidChange.
* Minor change in CHANGELOG
* Minor change in ASDisplayNodeTests.mm
* - [ASDisplayNode] Consolidate main thread initialization and allow apps to invoke it manually instead of +load.
Additionally this has a few minor fixes for Yoga support, and adds some basic
but universally valuable callbacks like -nodeDidLoad to ASNodeController.
* Small fix for handling _layoutVersion.
* Remove poking the scale accessor
* Make our async deallocation functions take a double pointer, so we can be sure we've released before the queue drains
* Make it a class property
* Fix the return type
* Use a locker
* Improve release notes
* Implement tests for the layout flattening process
* Refactor the flattening algorithm
- Remove flattened flag
- No more self check
- Stop traversing a layout tree branch when hits a displaynode node.
- Reuse as many existing ASLayout objects as possible
* Update changelog
* Ceil position values before comparing
* Explain why sublayout elements must be retained