| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- //
- // ASViewController.h
- // AsyncDisplayKit
- //
- // Created by Huy Nguyen on 16/09/15.
- //
- // 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/UIKit.h>
- #import <AsyncDisplayKit/ASDisplayNode.h>
- #import <AsyncDisplayKit/ASVisibilityProtocols.h>
- @class ASTraitCollection;
- NS_ASSUME_NONNULL_BEGIN
- typedef ASTraitCollection * _Nonnull (^ASDisplayTraitsForTraitCollectionBlock)(UITraitCollection *traitCollection);
- typedef ASTraitCollection * _Nonnull (^ASDisplayTraitsForTraitWindowSizeBlock)(CGSize windowSize);
- /**
- * ASViewController allows you to have a completely node backed hierarchy. It automatically
- * handles @c ASVisibilityDepth, automatic range mode and propogating @c ASDisplayTraits to contained nodes.
- *
- * You can opt-out of node backed hierarchy and use it like a normal UIViewController.
- * More importantly, you can use it as a base class for all of your view controllers among which some use a node hierarchy and some don't.
- * See examples/ASDKgram project for actual implementation.
- */
- @interface ASViewController<__covariant DisplayNodeType : ASDisplayNode *> : UIViewController <ASVisibilityDepth>
- /**
- * ASViewController initializer.
- *
- * @param node An ASDisplayNode which will provide the root view (self.view)
- * @return An ASViewController instance whose root view will be backed by the provided ASDisplayNode.
- *
- * @see ASVisibilityDepth
- */
- - (instancetype)initWithNode:(DisplayNodeType)node;
- NS_ASSUME_NONNULL_END
- /**
- * @return node Returns the ASDisplayNode which provides the backing view to the view controller.
- */
- @property (nonatomic, strong, readonly, null_unspecified) DisplayNodeType node;
- NS_ASSUME_NONNULL_BEGIN
- /**
- * Set this block to customize the ASDisplayTraits returned when the VC transitions to the given traitCollection.
- */
- @property (nonatomic, copy) ASDisplayTraitsForTraitCollectionBlock overrideDisplayTraitsWithTraitCollection;
- /**
- * Set this block to customize the ASDisplayTraits returned when the VC transitions to the given window size.
- */
- @property (nonatomic, copy) ASDisplayTraitsForTraitWindowSizeBlock overrideDisplayTraitsWithWindowSize;
- /**
- * @abstract Passthrough property to the the .interfaceState of the node.
- * @return The current ASInterfaceState of the node, indicating whether it is visible and other situational properties.
- * @see ASInterfaceState
- */
- @property (nonatomic, readonly) ASInterfaceState interfaceState;
- // AsyncDisplayKit 2.0 BETA: This property is still being tested, but it allows
- // blocking as a view controller becomes visible to ensure no placeholders flash onscreen.
- // Refer to examples/SynchronousConcurrency, AsyncViewController.m
- @property (nonatomic, assign) BOOL neverShowPlaceholders;
- @end
- @interface ASViewController (ASRangeControllerUpdateRangeProtocol)
- /**
- * Automatically adjust range mode based on view events. If you set this to YES, the view controller or its node
- * must conform to the ASRangeControllerUpdateRangeProtocol.
- *
- * Default value is YES *if* node or view controller conform to ASRangeControllerUpdateRangeProtocol otherwise it is NO.
- */
- @property (nonatomic, assign) BOOL automaticallyAdjustRangeModeBasedOnViewEvents;
- @end
- @interface ASViewController (Deprecated)
- /**
- * The constrained size used to measure the backing node.
- *
- * @discussion Defaults to providing a size range that uses the view controller view's bounds as
- * both the min and max definitions. Override this method to provide a custom size range to the
- * backing node.
- */
- - (ASSizeRange)nodeConstrainedSize AS_WARN_UNUSED_RESULT ASDISPLAYNODE_DEPRECATED_MSG("Set the size directly to the view's frame");
- @end
- NS_ASSUME_NONNULL_END
|