Swiftgram/AsyncDisplayKit/ASScrollNode.h
appleguy 2feabd2832 [ASScrollNode] Support for automaticallyManagesContentSize, adopting the ASLayoutSpec's size as the scrollable contentSize. (#2753)
* [ASScrollNode] Support for automaticallyManagesContentSize, adopting the ASLayoutSpec's size as the scrollable contentSize.

This feature has been desired for a long time, and has turned out to be phenomenally useful and easy to use.

It works well either for a blank ASScrollNode with .layoutSpecBlock set on it, or a subclass of ASScrollNode with a more
traditional layoutSpecThatFits: implementation.  With this approach there is no need to capture the layout size, use
an Absolute layout spec as a wrapper, or set contentSize anywhere in the code and it will update as the layout changes!

There is no automatic management of contentInset, but it would make sense to add this with keyboard listeners in the future.

* [ASScrollNode] Add locking to new properties, adjust how calculateLayout override is done.
2016-12-12 12:03:54 -08:00

38 lines
1.2 KiB
Objective-C

//
// ASScrollNode.h
// AsyncDisplayKit
//
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
// This source code is licensed under the BSD-style license found in the
// LICENSE file in the root directory of this source tree. An additional grant
// of patent rights can be found in the PATENTS file in the same directory.
//
#import <UIKit/UIScrollView.h>
#import <AsyncDisplayKit/ASDisplayNode.h>
NS_ASSUME_NONNULL_BEGIN
/**
* Simple node that wraps UIScrollView.
*/
@interface ASScrollNode : ASDisplayNode
/**
* @abstract The node's UIScrollView.
*/
@property (nonatomic, readonly, strong) UIScrollView *view;
/**
* @abstract When enabled, the size calculated by the node's layout spec is used as
* the .contentSize of the scroll view, instead of the bounds size. The bounds is instead
* allowed to match the parent's size (whenever it is finite - otherwise, the bounds size
* also grows to the full contentSize). It also works with .layoutSpecBlock().
* NOTE: Most users of ASScrollView will want to use this, and may be enabled by default later.
*/
@property (nonatomic, assign) BOOL automaticallyManagesContentSize;
@end
NS_ASSUME_NONNULL_END