added nsobject based ASDisplayTraits class

This commit is contained in:
rcancro
2016-05-04 10:37:06 -07:00
parent 35820e58a0
commit f828d079fa
13 changed files with 198 additions and 30 deletions

View File

@@ -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));

View File

@@ -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];

View File

@@ -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;