mirror of
https://github.com/HackPlan/AsyncDisplayKit.git
synced 2026-03-28 07:38:44 +08:00
added nsobject based ASDisplayTraits class
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
|
||||
#import "CollectionViewController.h"
|
||||
#import "KittenNode.h"
|
||||
#import <AsyncDisplayKit/ASDisplayTraits.h>
|
||||
|
||||
@interface CollectionViewController () <ASCollectionDelegate, ASCollectionDataSource>
|
||||
@property (nonatomic, strong) ASCollectionNode *collectionNode;
|
||||
@@ -61,7 +62,7 @@
|
||||
|
||||
- (ASSizeRange)collectionView:(ASCollectionView *)collectionView constrainedSizeForNodeAtIndexPath:(NSIndexPath *)indexPath
|
||||
{
|
||||
ASEnvironmentDisplayTraits displayTraits = self.collectionNode.environmentState.displayTraits;
|
||||
ASDisplayTraits *displayTraits = [self.collectionNode displayTraits];
|
||||
|
||||
if (displayTraits.horizontalSizeClass == UIUserInterfaceSizeClassRegular) {
|
||||
return ASSizeRangeMake(CGSizeMake(200, 120), CGSizeMake(200, 120));
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#import "KittenNode.h"
|
||||
#import "OverrideViewController.h"
|
||||
|
||||
#import <AsyncDisplayKit/ASDisplayTraits.h>
|
||||
|
||||
static const CGFloat kOuterPadding = 16.0f;
|
||||
static const CGFloat kInnerPadding = 10.0f;
|
||||
|
||||
@@ -128,8 +130,7 @@ static const CGFloat kInnerPadding = 10.0f;
|
||||
|
||||
- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constrainedSize
|
||||
{
|
||||
|
||||
ASEnvironmentDisplayTraits displayTraits = self.environmentState.displayTraits;
|
||||
ASDisplayTraits *displayTraits = [self displayTraits];
|
||||
|
||||
ASStackLayoutSpec *stackSpec = [[ASStackLayoutSpec alloc] init];
|
||||
stackSpec.spacing = kInnerPadding;
|
||||
@@ -146,19 +147,15 @@ static const CGFloat kInnerPadding = 10.0f;
|
||||
return [ASInsetLayoutSpec insetLayoutSpecWithInsets:UIEdgeInsetsMake(kOuterPadding, kOuterPadding, kOuterPadding, kOuterPadding) child:stackSpec];
|
||||
}
|
||||
|
||||
|
||||
+ (void)defaultImageTappedAction:(ASViewController *)sourceViewController
|
||||
{
|
||||
OverrideViewController *overrideVC = [[OverrideViewController alloc] init];
|
||||
|
||||
overrideVC.overrideDisplayTraitsWithTraitCollection = ^(UITraitCollection *traitCollection) {
|
||||
return (ASEnvironmentDisplayTraits) {
|
||||
.displayScale = traitCollection.displayScale,
|
||||
.horizontalSizeClass = UIUserInterfaceSizeClassCompact,
|
||||
.userInterfaceIdiom = traitCollection.userInterfaceIdiom,
|
||||
.verticalSizeClass = UIUserInterfaceSizeClassCompact,
|
||||
.forceTouchCapability = traitCollection.forceTouchCapability,
|
||||
};
|
||||
ASDisplayTraits *displayTraits = [ASDisplayTraits displayTraitsWithUITraitCollection:traitCollection];
|
||||
displayTraits.horizontalSizeClass = UIUserInterfaceSizeClassCompact;
|
||||
displayTraits.verticalSizeClass = UIUserInterfaceSizeClassCompact;
|
||||
return displayTraits;
|
||||
};
|
||||
|
||||
[sourceViewController presentViewController:overrideVC animated:YES completion:nil];
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
*/
|
||||
|
||||
#import "OverrideViewController.h"
|
||||
#import <AsyncDisplayKit/ASDisplayTraits.h>
|
||||
|
||||
static NSString *kLinkAttributeName = @"PlaceKittenNodeLinkAttributeName";
|
||||
|
||||
@interface OverrideNode()
|
||||
@@ -42,7 +44,7 @@ static NSString *kLinkAttributeName = @"PlaceKittenNodeLinkAttributeName";
|
||||
- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constrainedSize
|
||||
{
|
||||
CGFloat pointSize = 16.f;
|
||||
ASEnvironmentDisplayTraits displayTraits = self.environmentState.displayTraits;
|
||||
ASDisplayTraits *displayTraits = [self displayTraits];
|
||||
if (displayTraits.horizontalSizeClass == UIUserInterfaceSizeClassRegular) {
|
||||
// This should never happen because we override the VC's display traits to always be compact.
|
||||
pointSize = 100;
|
||||
|
||||
Reference in New Issue
Block a user