mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
added nsobject based ASDisplayTraits class
This commit is contained in:
@@ -324,6 +324,10 @@
|
|||||||
9C55866C1BD54A3000B50E3A /* ASAsciiArtBoxCreator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C5586671BD549CB00B50E3A /* ASAsciiArtBoxCreator.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
9C55866C1BD54A3000B50E3A /* ASAsciiArtBoxCreator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C5586671BD549CB00B50E3A /* ASAsciiArtBoxCreator.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
9C6BB3B21B8CC9C200F13F52 /* ASStaticLayoutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6BB3B01B8CC9C200F13F52 /* ASStaticLayoutable.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
9C6BB3B21B8CC9C200F13F52 /* ASStaticLayoutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6BB3B01B8CC9C200F13F52 /* ASStaticLayoutable.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
9C6BB3B31B8CC9C200F13F52 /* ASStaticLayoutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6BB3B01B8CC9C200F13F52 /* ASStaticLayoutable.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
9C6BB3B31B8CC9C200F13F52 /* ASStaticLayoutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6BB3B01B8CC9C200F13F52 /* ASStaticLayoutable.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
9C70F2031CDA4EFA007D6C76 /* ASDisplayTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C70F2011CDA4EFA007D6C76 /* ASDisplayTraits.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
9C70F2041CDA4EFA007D6C76 /* ASDisplayTraits.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C70F2021CDA4EFA007D6C76 /* ASDisplayTraits.m */; };
|
||||||
|
9C70F2051CDA4F06007D6C76 /* ASDisplayTraits.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C70F2021CDA4EFA007D6C76 /* ASDisplayTraits.m */; };
|
||||||
|
9C70F2061CDA4F0C007D6C76 /* ASDisplayTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C70F2011CDA4EFA007D6C76 /* ASDisplayTraits.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
9C8221951BA237B80037F19A /* ASStackBaselinePositionedLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C8221931BA237B80037F19A /* ASStackBaselinePositionedLayout.h */; };
|
9C8221951BA237B80037F19A /* ASStackBaselinePositionedLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C8221931BA237B80037F19A /* ASStackBaselinePositionedLayout.h */; };
|
||||||
9C8221961BA237B80037F19A /* ASStackBaselinePositionedLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C8221931BA237B80037F19A /* ASStackBaselinePositionedLayout.h */; };
|
9C8221961BA237B80037F19A /* ASStackBaselinePositionedLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C8221931BA237B80037F19A /* ASStackBaselinePositionedLayout.h */; };
|
||||||
9C8221971BA237B80037F19A /* ASStackBaselinePositionedLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C8221941BA237B80037F19A /* ASStackBaselinePositionedLayout.mm */; };
|
9C8221971BA237B80037F19A /* ASStackBaselinePositionedLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9C8221941BA237B80037F19A /* ASStackBaselinePositionedLayout.mm */; };
|
||||||
@@ -801,6 +805,8 @@
|
|||||||
9C5586671BD549CB00B50E3A /* ASAsciiArtBoxCreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASAsciiArtBoxCreator.h; path = AsyncDisplayKit/Layout/ASAsciiArtBoxCreator.h; sourceTree = "<group>"; };
|
9C5586671BD549CB00B50E3A /* ASAsciiArtBoxCreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASAsciiArtBoxCreator.h; path = AsyncDisplayKit/Layout/ASAsciiArtBoxCreator.h; sourceTree = "<group>"; };
|
||||||
9C5586681BD549CB00B50E3A /* ASAsciiArtBoxCreator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASAsciiArtBoxCreator.m; path = AsyncDisplayKit/Layout/ASAsciiArtBoxCreator.m; sourceTree = "<group>"; };
|
9C5586681BD549CB00B50E3A /* ASAsciiArtBoxCreator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASAsciiArtBoxCreator.m; path = AsyncDisplayKit/Layout/ASAsciiArtBoxCreator.m; sourceTree = "<group>"; };
|
||||||
9C6BB3B01B8CC9C200F13F52 /* ASStaticLayoutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASStaticLayoutable.h; path = AsyncDisplayKit/Layout/ASStaticLayoutable.h; sourceTree = "<group>"; };
|
9C6BB3B01B8CC9C200F13F52 /* ASStaticLayoutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASStaticLayoutable.h; path = AsyncDisplayKit/Layout/ASStaticLayoutable.h; sourceTree = "<group>"; };
|
||||||
|
9C70F2011CDA4EFA007D6C76 /* ASDisplayTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASDisplayTraits.h; sourceTree = "<group>"; };
|
||||||
|
9C70F2021CDA4EFA007D6C76 /* ASDisplayTraits.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASDisplayTraits.m; sourceTree = "<group>"; };
|
||||||
9C8221931BA237B80037F19A /* ASStackBaselinePositionedLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASStackBaselinePositionedLayout.h; sourceTree = "<group>"; };
|
9C8221931BA237B80037F19A /* ASStackBaselinePositionedLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASStackBaselinePositionedLayout.h; sourceTree = "<group>"; };
|
||||||
9C8221941BA237B80037F19A /* ASStackBaselinePositionedLayout.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASStackBaselinePositionedLayout.mm; sourceTree = "<group>"; };
|
9C8221941BA237B80037F19A /* ASStackBaselinePositionedLayout.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASStackBaselinePositionedLayout.mm; sourceTree = "<group>"; };
|
||||||
9C8898BA1C738B9800D6B02E /* ASTextKitFontSizeAdjuster.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ASTextKitFontSizeAdjuster.mm; path = TextKit/ASTextKitFontSizeAdjuster.mm; sourceTree = "<group>"; };
|
9C8898BA1C738B9800D6B02E /* ASTextKitFontSizeAdjuster.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ASTextKitFontSizeAdjuster.mm; path = TextKit/ASTextKitFontSizeAdjuster.mm; sourceTree = "<group>"; };
|
||||||
@@ -1223,6 +1229,8 @@
|
|||||||
205F0E0D1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h */,
|
205F0E0D1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h */,
|
||||||
205F0E0E1B371875007741D0 /* UICollectionViewLayout+ASConvenience.m */,
|
205F0E0E1B371875007741D0 /* UICollectionViewLayout+ASConvenience.m */,
|
||||||
058D09FF195D050800B7D73C /* UIView+ASConvenience.h */,
|
058D09FF195D050800B7D73C /* UIView+ASConvenience.h */,
|
||||||
|
9C70F2011CDA4EFA007D6C76 /* ASDisplayTraits.h */,
|
||||||
|
9C70F2021CDA4EFA007D6C76 /* ASDisplayTraits.m */,
|
||||||
);
|
);
|
||||||
path = Details;
|
path = Details;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -1520,6 +1528,7 @@
|
|||||||
257754A81BEE44CD00737CA5 /* ASTextKitContext.h in Headers */,
|
257754A81BEE44CD00737CA5 /* ASTextKitContext.h in Headers */,
|
||||||
DB55C2611C6408D6004EDCF5 /* _ASTransitionContext.h in Headers */,
|
DB55C2611C6408D6004EDCF5 /* _ASTransitionContext.h in Headers */,
|
||||||
464052221A3F83C40061C0BA /* ASFlowLayoutController.h in Headers */,
|
464052221A3F83C40061C0BA /* ASFlowLayoutController.h in Headers */,
|
||||||
|
9C70F2031CDA4EFA007D6C76 /* ASDisplayTraits.h in Headers */,
|
||||||
257754AF1BEE44CD00737CA5 /* ASTextKitRenderer+TextChecking.h in Headers */,
|
257754AF1BEE44CD00737CA5 /* ASTextKitRenderer+TextChecking.h in Headers */,
|
||||||
058D0A57195D05DC00B7D73C /* ASHighlightOverlayLayer.h in Headers */,
|
058D0A57195D05DC00B7D73C /* ASHighlightOverlayLayer.h in Headers */,
|
||||||
058D0A7C195D05F900B7D73C /* ASImageNode+CGExtras.h in Headers */,
|
058D0A7C195D05F900B7D73C /* ASImageNode+CGExtras.h in Headers */,
|
||||||
@@ -1656,6 +1665,7 @@
|
|||||||
34EFC75B1B701BAF00AD841F /* ASDimension.h in Headers */,
|
34EFC75B1B701BAF00AD841F /* ASDimension.h in Headers */,
|
||||||
A37320101C571B740011FC94 /* ASTextNode+Beta.h in Headers */,
|
A37320101C571B740011FC94 /* ASTextNode+Beta.h in Headers */,
|
||||||
DBABFAFC1C6A8D2F0039EA4A /* _ASTransitionContext.h in Headers */,
|
DBABFAFC1C6A8D2F0039EA4A /* _ASTransitionContext.h in Headers */,
|
||||||
|
9C70F2061CDA4F0C007D6C76 /* ASDisplayTraits.h in Headers */,
|
||||||
254C6B801BF94DF4003EC431 /* ASEqualityHashHelpers.h in Headers */,
|
254C6B801BF94DF4003EC431 /* ASEqualityHashHelpers.h in Headers */,
|
||||||
B350624F1B010EFD0018CF92 /* ASDisplayNode+DebugTiming.h in Headers */,
|
B350624F1B010EFD0018CF92 /* ASDisplayNode+DebugTiming.h in Headers */,
|
||||||
B35061FD1B010EFD0018CF92 /* ASDisplayNode+Subclasses.h in Headers */,
|
B35061FD1B010EFD0018CF92 /* ASDisplayNode+Subclasses.h in Headers */,
|
||||||
@@ -2043,6 +2053,7 @@
|
|||||||
ACF6ED521B17847A00DA7C62 /* ASStackUnpositionedLayout.mm in Sources */,
|
ACF6ED521B17847A00DA7C62 /* ASStackUnpositionedLayout.mm in Sources */,
|
||||||
257754A61BEE44CD00737CA5 /* ASTextKitAttributes.mm in Sources */,
|
257754A61BEE44CD00737CA5 /* ASTextKitAttributes.mm in Sources */,
|
||||||
81EE38501C8E94F000456208 /* ASRunLoopQueue.mm in Sources */,
|
81EE38501C8E94F000456208 /* ASRunLoopQueue.mm in Sources */,
|
||||||
|
9C70F2041CDA4EFA007D6C76 /* ASDisplayTraits.m in Sources */,
|
||||||
92074A691CC8BADA00918F75 /* ASControlNode+tvOS.m in Sources */,
|
92074A691CC8BADA00918F75 /* ASControlNode+tvOS.m in Sources */,
|
||||||
ACF6ED321B17843500DA7C62 /* ASStaticLayoutSpec.mm in Sources */,
|
ACF6ED321B17843500DA7C62 /* ASStaticLayoutSpec.mm in Sources */,
|
||||||
AC026B6B1BD57D6F00BBC17E /* ASChangeSetDataController.m in Sources */,
|
AC026B6B1BD57D6F00BBC17E /* ASChangeSetDataController.m in Sources */,
|
||||||
@@ -2193,6 +2204,7 @@
|
|||||||
34EFC7721B701D0300AD841F /* ASStackLayoutSpec.mm in Sources */,
|
34EFC7721B701D0300AD841F /* ASStackLayoutSpec.mm in Sources */,
|
||||||
34EFC7761B701D2A00AD841F /* ASStackPositionedLayout.mm in Sources */,
|
34EFC7761B701D2A00AD841F /* ASStackPositionedLayout.mm in Sources */,
|
||||||
7AB338661C55B3420055FDE8 /* ASRelativeLayoutSpec.mm in Sources */,
|
7AB338661C55B3420055FDE8 /* ASRelativeLayoutSpec.mm in Sources */,
|
||||||
|
9C70F2051CDA4F06007D6C76 /* ASDisplayTraits.m in Sources */,
|
||||||
34EFC7781B701D3100AD841F /* ASStackUnpositionedLayout.mm in Sources */,
|
34EFC7781B701D3100AD841F /* ASStackUnpositionedLayout.mm in Sources */,
|
||||||
DE84918E1C8FFF9F003D89E9 /* ASRunLoopQueue.mm in Sources */,
|
DE84918E1C8FFF9F003D89E9 /* ASRunLoopQueue.mm in Sources */,
|
||||||
AC026B6C1BD57D6F00BBC17E /* ASChangeSetDataController.m in Sources */,
|
AC026B6C1BD57D6F00BBC17E /* ASChangeSetDataController.m in Sources */,
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#import "_ASCoreAnimationExtras.h"
|
#import "_ASCoreAnimationExtras.h"
|
||||||
#import "ASDisplayNodeLayoutContext.h"
|
#import "ASDisplayNodeLayoutContext.h"
|
||||||
#import "ASDisplayNodeExtras.h"
|
#import "ASDisplayNodeExtras.h"
|
||||||
|
#import "ASDisplayTraits.h"
|
||||||
#import "ASEqualityHelpers.h"
|
#import "ASEqualityHelpers.h"
|
||||||
#import "ASRunLoopQueue.h"
|
#import "ASRunLoopQueue.h"
|
||||||
#import "ASEnvironmentInternal.h"
|
#import "ASEnvironmentInternal.h"
|
||||||
@@ -2720,6 +2721,11 @@ static const char *ASDisplayNodeDrawingPriorityKey = "ASDrawingPriority";
|
|||||||
ASEnvironmentLayoutOptionsForwarding
|
ASEnvironmentLayoutOptionsForwarding
|
||||||
ASEnvironmentLayoutExtensibilityForwarding
|
ASEnvironmentLayoutExtensibilityForwarding
|
||||||
|
|
||||||
|
- (ASDisplayTraits *)displayTraits
|
||||||
|
{
|
||||||
|
ASDN::MutexLocker l(_propertyLock);
|
||||||
|
return [ASDisplayTraits displayTraitsWithASEnvironmentDisplayTraits:_environmentState.displayTraits];
|
||||||
|
}
|
||||||
|
|
||||||
#if TARGET_OS_TV
|
#if TARGET_OS_TV
|
||||||
#pragma mark - UIFocusEnvironment Protocol (tvOS)
|
#pragma mark - UIFocusEnvironment Protocol (tvOS)
|
||||||
|
|||||||
@@ -9,10 +9,12 @@
|
|||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
#import <AsyncDisplayKit/ASDisplayNode.h>
|
#import <AsyncDisplayKit/ASDisplayNode.h>
|
||||||
|
|
||||||
|
@class ASDisplayTraits;
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
typedef ASEnvironmentDisplayTraits (^ASEnvironmentDisplayTraitsForTraitCollectionBlock)(UITraitCollection *traitCollection);
|
typedef ASDisplayTraits * _Nonnull (^ASDisplayTraitsForTraitCollectionBlock)(UITraitCollection *traitCollection);
|
||||||
typedef ASEnvironmentDisplayTraits (^ASEnvironmentDisplayTraitsForTraitWindowSizeBlock)(CGSize windowSize);
|
typedef ASDisplayTraits * _Nonnull (^ASDisplayTraitsForTraitWindowSizeBlock)(CGSize windowSize);
|
||||||
|
|
||||||
@interface ASViewController<__covariant DisplayNodeType : ASDisplayNode *> : UIViewController
|
@interface ASViewController<__covariant DisplayNodeType : ASDisplayNode *> : UIViewController
|
||||||
|
|
||||||
@@ -25,12 +27,12 @@ typedef ASEnvironmentDisplayTraits (^ASEnvironmentDisplayTraitsForTraitWindowSiz
|
|||||||
/**
|
/**
|
||||||
* Set this block to customize the ASDisplayTraits returned when the VC transitions to the given traitCollection.
|
* Set this block to customize the ASDisplayTraits returned when the VC transitions to the given traitCollection.
|
||||||
*/
|
*/
|
||||||
@property (nonatomic, copy) ASEnvironmentDisplayTraitsForTraitCollectionBlock overrideDisplayTraitsWithTraitCollection;
|
@property (nonatomic, copy) ASDisplayTraitsForTraitCollectionBlock overrideDisplayTraitsWithTraitCollection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set this block to customize the ASDisplayTraits returned when the VC transitions to the given window size.
|
* Set this block to customize the ASDisplayTraits returned when the VC transitions to the given window size.
|
||||||
*/
|
*/
|
||||||
@property (nonatomic, copy) ASEnvironmentDisplayTraitsForTraitWindowSizeBlock overrideDisplayTraitsWithWindowSize;
|
@property (nonatomic, copy) ASDisplayTraitsForTraitWindowSizeBlock overrideDisplayTraitsWithWindowSize;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @abstract Passthrough property to the the .interfaceState of the node.
|
* @abstract Passthrough property to the the .interfaceState of the node.
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#import "ASDimension.h"
|
#import "ASDimension.h"
|
||||||
#import "ASDisplayNode+FrameworkPrivate.h"
|
#import "ASDisplayNode+FrameworkPrivate.h"
|
||||||
#import "ASDisplayNode+Beta.h"
|
#import "ASDisplayNode+Beta.h"
|
||||||
|
#import "ASDisplayTraits.h"
|
||||||
#import "ASEnvironmentInternal.h"
|
#import "ASEnvironmentInternal.h"
|
||||||
#import "ASRangeControllerUpdateRangeProtocol+Beta.h"
|
#import "ASRangeControllerUpdateRangeProtocol+Beta.h"
|
||||||
|
|
||||||
@@ -146,7 +147,9 @@
|
|||||||
- (ASEnvironmentDisplayTraits)displayTraitsForTraitCollection:(UITraitCollection *)traitCollection
|
- (ASEnvironmentDisplayTraits)displayTraitsForTraitCollection:(UITraitCollection *)traitCollection
|
||||||
{
|
{
|
||||||
if (self.overrideDisplayTraitsWithTraitCollection) {
|
if (self.overrideDisplayTraitsWithTraitCollection) {
|
||||||
return self.overrideDisplayTraitsWithTraitCollection(traitCollection);
|
ASDisplayTraits *displayTraits = self.overrideDisplayTraitsWithTraitCollection(traitCollection);
|
||||||
|
displayTraits.isMutable = NO;
|
||||||
|
return [displayTraits environmentDisplayTraits];
|
||||||
}
|
}
|
||||||
|
|
||||||
ASEnvironmentDisplayTraits displayTraits = ASEnvironmentDisplayTraitsFromUITraitCollection(traitCollection);
|
ASEnvironmentDisplayTraits displayTraits = ASEnvironmentDisplayTraitsFromUITraitCollection(traitCollection);
|
||||||
@@ -157,7 +160,9 @@
|
|||||||
- (ASEnvironmentDisplayTraits)displayTraitsForWindowSize:(CGSize)windowSize
|
- (ASEnvironmentDisplayTraits)displayTraitsForWindowSize:(CGSize)windowSize
|
||||||
{
|
{
|
||||||
if (self.overrideDisplayTraitsWithWindowSize) {
|
if (self.overrideDisplayTraitsWithWindowSize) {
|
||||||
return self.overrideDisplayTraitsWithWindowSize(windowSize);
|
ASDisplayTraits *displayTraits = self.overrideDisplayTraitsWithWindowSize(windowSize);
|
||||||
|
displayTraits.isMutable = NO;
|
||||||
|
return [displayTraits environmentDisplayTraits];
|
||||||
}
|
}
|
||||||
return self.node.environmentState.displayTraits;
|
return self.node.environmentState.displayTraits;
|
||||||
}
|
}
|
||||||
|
|||||||
29
AsyncDisplayKit/Details/ASDisplayTraits.h
Normal file
29
AsyncDisplayKit/Details/ASDisplayTraits.h
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* 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/ASEnvironment.h>
|
||||||
|
|
||||||
|
@interface ASDisplayTraits : NSObject
|
||||||
|
|
||||||
|
@property (nonatomic, assign) BOOL isMutable;
|
||||||
|
|
||||||
|
@property (nonatomic, assign) CGFloat displayScale;
|
||||||
|
@property (nonatomic, assign) UIUserInterfaceSizeClass horizontalSizeClass;
|
||||||
|
@property (nonatomic, assign) UIUserInterfaceIdiom userInterfaceIdiom;
|
||||||
|
@property (nonatomic, assign) UIUserInterfaceSizeClass verticalSizeClass;
|
||||||
|
@property (nonatomic, assign) UIForceTouchCapability forceTouchCapability;
|
||||||
|
|
||||||
|
+ (ASDisplayTraits *)displayTraitsWithASEnvironmentDisplayTraits:(ASEnvironmentDisplayTraits)traits;
|
||||||
|
+ (ASDisplayTraits *)displayTraitsWithUITraitCollection:(UITraitCollection *)traitCollection;
|
||||||
|
|
||||||
|
- (ASEnvironmentDisplayTraits)environmentDisplayTraits;
|
||||||
|
|
||||||
|
@end
|
||||||
91
AsyncDisplayKit/Details/ASDisplayTraits.m
Normal file
91
AsyncDisplayKit/Details/ASDisplayTraits.m
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
//
|
||||||
|
// ASDisplayTraits.m
|
||||||
|
// AsyncDisplayKit
|
||||||
|
//
|
||||||
|
// Created by Ricky Cancro on 5/4/16.
|
||||||
|
// Copyright © 2016 Facebook. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "ASDisplayTraits.h"
|
||||||
|
#import <AsyncDisplayKit/ASAssert.h>
|
||||||
|
#import <AsyncDisplayKit/ASAvailability.h>
|
||||||
|
|
||||||
|
@implementation ASDisplayTraits
|
||||||
|
|
||||||
|
- (instancetype)init
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_isMutable = YES;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setDisplayScale:(CGFloat)displayScale
|
||||||
|
{
|
||||||
|
ASDisplayNodeAssert(self.isMutable, @"ASDisplayTraits is no longer mutable");
|
||||||
|
_displayScale = displayScale;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setHorizontalSizeClass:(UIUserInterfaceSizeClass)horizontalSizeClass
|
||||||
|
{
|
||||||
|
ASDisplayNodeAssert(self.isMutable, @"ASDisplayTraits is no longer mutable");
|
||||||
|
_horizontalSizeClass = horizontalSizeClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setUserInterfaceIdiom:(UIUserInterfaceIdiom)userInterfaceIdiom
|
||||||
|
{
|
||||||
|
ASDisplayNodeAssert(self.isMutable, @"ASDisplayTraits is no longer mutable");
|
||||||
|
_userInterfaceIdiom = userInterfaceIdiom;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setVerticalSizeClass:(UIUserInterfaceSizeClass)verticalSizeClass
|
||||||
|
{
|
||||||
|
ASDisplayNodeAssert(self.isMutable, @"ASDisplayTraits is no longer mutable");
|
||||||
|
_verticalSizeClass = verticalSizeClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setForceTouchCapability:(UIForceTouchCapability)forceTouchCapability
|
||||||
|
{
|
||||||
|
ASDisplayNodeAssert(self.isMutable, @"ASDisplayTraits is no longer mutable");
|
||||||
|
_forceTouchCapability = forceTouchCapability;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (ASDisplayTraits *)displayTraitsWithASEnvironmentDisplayTraits:(ASEnvironmentDisplayTraits)traits
|
||||||
|
{
|
||||||
|
ASDisplayTraits *displayTraits = [[ASDisplayTraits alloc] init];
|
||||||
|
displayTraits.displayScale = traits.displayScale;
|
||||||
|
displayTraits.horizontalSizeClass = traits.horizontalSizeClass;
|
||||||
|
displayTraits.verticalSizeClass = traits.verticalSizeClass;
|
||||||
|
displayTraits.userInterfaceIdiom = traits.userInterfaceIdiom;
|
||||||
|
displayTraits.forceTouchCapability = traits.forceTouchCapability;
|
||||||
|
return displayTraits;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (ASDisplayTraits *)displayTraitsWithUITraitCollection:(UITraitCollection *)traitCollection
|
||||||
|
{
|
||||||
|
ASDisplayTraits *displayTraits = [[ASDisplayTraits alloc] init];
|
||||||
|
if (AS_AT_LEAST_IOS8) {
|
||||||
|
displayTraits.displayScale = traitCollection.displayScale;
|
||||||
|
displayTraits.horizontalSizeClass = traitCollection.horizontalSizeClass;
|
||||||
|
displayTraits.verticalSizeClass = traitCollection.verticalSizeClass;
|
||||||
|
displayTraits.userInterfaceIdiom = traitCollection.userInterfaceIdiom;
|
||||||
|
if (AS_AT_LEAST_IOS9) {
|
||||||
|
displayTraits.forceTouchCapability = traitCollection.forceTouchCapability;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return displayTraits;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (ASEnvironmentDisplayTraits)environmentDisplayTraits
|
||||||
|
{
|
||||||
|
return (ASEnvironmentDisplayTraits) {
|
||||||
|
.displayScale = self.displayScale,
|
||||||
|
.horizontalSizeClass = self.horizontalSizeClass,
|
||||||
|
.userInterfaceIdiom = self.userInterfaceIdiom,
|
||||||
|
.verticalSizeClass = self.verticalSizeClass,
|
||||||
|
.forceTouchCapability = self.forceTouchCapability,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -76,15 +76,14 @@ typedef struct ASEnvironmentDisplayTraits {
|
|||||||
// sure that it is valid.
|
// sure that it is valid.
|
||||||
//
|
//
|
||||||
// Use displayContext when you wish to pass view context specific data along with the
|
// Use displayContext when you wish to pass view context specific data along with the
|
||||||
// trait collcetion to subnodes. This should be a piece of data owned by an
|
// display traits to subnodes. This should be a piece of data owned by an
|
||||||
// ASViewController, which will ensure that the data is still valid when laying out
|
// ASViewController, which will ensure that the data is still valid when laying out
|
||||||
// its subviews. When the VC is dealloc'ed, the displayContext it created will also
|
// its subviews. When the VC is dealloc'ed, the displayContext it created will also
|
||||||
// be dealloced but any subnodes that are hanging around (why would they be?) will now
|
// be dealloced but any subnodes that are hanging around (why would they be?) will now
|
||||||
// have a displayContext that points to a bad pointer.
|
// have a displayContext that points to a bad pointer.
|
||||||
//
|
//
|
||||||
// An added precaution is to call ASDisplayTraitsClearDisplayContext from your ASVC's desctructor
|
// As an added precaution ASDisplayTraitsClearDisplayContext is called from ASVC's desctructor
|
||||||
// which will propagate a nil displayContext to its subnodes.
|
// which will propagate a nil displayContext to its subnodes.
|
||||||
//__unsafe_unretained id displayContext;
|
|
||||||
id __unsafe_unretained displayContext;
|
id __unsafe_unretained displayContext;
|
||||||
} ASEnvironmentDisplayTraits;
|
} ASEnvironmentDisplayTraits;
|
||||||
|
|
||||||
@@ -104,7 +103,7 @@ extern ASEnvironmentState ASEnvironmentStateMakeDefault();
|
|||||||
|
|
||||||
ASDISPLAYNODE_EXTERN_C_END
|
ASDISPLAYNODE_EXTERN_C_END
|
||||||
|
|
||||||
@class ASTraitCollection;
|
@class ASDisplayTraits;
|
||||||
|
|
||||||
#pragma mark - ASEnvironment
|
#pragma mark - ASEnvironment
|
||||||
|
|
||||||
@@ -131,6 +130,9 @@ ASDISPLAYNODE_EXTERN_C_END
|
|||||||
/// Classes should implement this method and return YES / NO dependent if downware propagation is enabled or not
|
/// Classes should implement this method and return YES / NO dependent if downware propagation is enabled or not
|
||||||
- (BOOL)supportsTraitsCollectionPropagation;
|
- (BOOL)supportsTraitsCollectionPropagation;
|
||||||
|
|
||||||
|
/// Returns an NSObject-representation of the environment's ASEnvironmentDisplayTraits
|
||||||
|
- (ASDisplayTraits *)displayTraits;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
// ASCollection/TableNodes don't actually have ASCellNodes as subnodes. Because of this we can't rely on display trait
|
// ASCollection/TableNodes don't actually have ASCellNodes as subnodes. Because of this we can't rely on display trait
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#import "ASEnvironment.h"
|
#import "ASEnvironment.h"
|
||||||
#import "ASEnvironmentInternal.h"
|
#import "ASEnvironmentInternal.h"
|
||||||
|
#import <AsyncDisplayKit/ASAvailability.h>
|
||||||
|
|
||||||
ASEnvironmentLayoutOptionsState _ASEnvironmentLayoutOptionsStateMakeDefault()
|
ASEnvironmentLayoutOptionsState _ASEnvironmentLayoutOptionsStateMakeDefault()
|
||||||
{
|
{
|
||||||
@@ -46,14 +47,18 @@ ASEnvironmentDisplayTraits _ASEnvironmentDisplayTraitsMakeDefault()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ASEnvironmentDisplayTraits ASEnvironmentDisplayTraitsFromUITraitCollection(UITraitCollection *traitCollection)
|
ASEnvironmentDisplayTraits ASEnvironmentDisplayTraitsFromUITraitCollection(UITraitCollection *traitCollection)
|
||||||
{
|
{
|
||||||
return (ASEnvironmentDisplayTraits) {
|
ASEnvironmentDisplayTraits displayTraits;
|
||||||
.displayScale = traitCollection.displayScale,
|
if (AS_AT_LEAST_IOS8) {
|
||||||
.horizontalSizeClass = traitCollection.horizontalSizeClass,
|
displayTraits.displayScale = traitCollection.displayScale;
|
||||||
.userInterfaceIdiom = traitCollection.userInterfaceIdiom,
|
displayTraits.horizontalSizeClass = traitCollection.horizontalSizeClass;
|
||||||
.verticalSizeClass = traitCollection.verticalSizeClass,
|
displayTraits.verticalSizeClass = traitCollection.verticalSizeClass;
|
||||||
.forceTouchCapability = traitCollection.forceTouchCapability,
|
displayTraits.userInterfaceIdiom = traitCollection.userInterfaceIdiom;
|
||||||
};
|
if (AS_AT_LEAST_IOS9) {
|
||||||
|
displayTraits.forceTouchCapability = traitCollection.forceTouchCapability;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return displayTraits;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL ASEnvironmentDisplayTraitsIsEqualToASEnvironmentDisplayTraits(ASEnvironmentDisplayTraits displayTraits0, ASEnvironmentDisplayTraits displayTraits1)
|
BOOL ASEnvironmentDisplayTraitsIsEqualToASEnvironmentDisplayTraits(ASEnvironmentDisplayTraits displayTraits0, ASEnvironmentDisplayTraits displayTraits1)
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#import "ASAssert.h"
|
#import "ASAssert.h"
|
||||||
#import "ASBaseDefines.h"
|
#import "ASBaseDefines.h"
|
||||||
|
#import "ASDisplayTraits.h"
|
||||||
#import "ASEnvironmentInternal.h"
|
#import "ASEnvironmentInternal.h"
|
||||||
|
|
||||||
#import "ASInternalHelpers.h"
|
#import "ASInternalHelpers.h"
|
||||||
@@ -203,6 +204,12 @@
|
|||||||
ASEnvironmentLayoutOptionsForwarding
|
ASEnvironmentLayoutOptionsForwarding
|
||||||
ASEnvironmentLayoutExtensibilityForwarding
|
ASEnvironmentLayoutExtensibilityForwarding
|
||||||
|
|
||||||
|
- (ASDisplayTraits *)displayTraits
|
||||||
|
{
|
||||||
|
ASDN::MutexLocker l(_propertyLock);
|
||||||
|
return [ASDisplayTraits displayTraitsWithASEnvironmentDisplayTraits:_environmentState.displayTraits];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation ASLayoutSpec (Debugging)
|
@implementation ASLayoutSpec (Debugging)
|
||||||
|
|||||||
@@ -23,6 +23,10 @@
|
|||||||
#define kCFCoreFoundationVersionNumber_iOS_8_0 1140.1
|
#define kCFCoreFoundationVersionNumber_iOS_8_0 1140.1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef kCFCoreFoundationVersionNumber_iOS_8_4
|
||||||
|
#define kCFCoreFoundationVersionNumber_iOS_8_4 1145.15
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __IPHONE_7_0
|
#ifndef __IPHONE_7_0
|
||||||
#define __IPHONE_7_0 70000
|
#define __IPHONE_7_0 70000
|
||||||
#endif
|
#endif
|
||||||
@@ -31,6 +35,10 @@
|
|||||||
#define __IPHONE_8_0 80000
|
#define __IPHONE_8_0 80000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __IPHONE_9_0
|
||||||
|
#define __IPHONE_9_0 90000
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef AS_IOS8_SDK_OR_LATER
|
#ifndef AS_IOS8_SDK_OR_LATER
|
||||||
#define AS_IOS8_SDK_OR_LATER __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0
|
#define AS_IOS8_SDK_OR_LATER __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0
|
||||||
#endif
|
#endif
|
||||||
@@ -38,3 +46,4 @@
|
|||||||
#define AS_AT_LEAST_IOS7 (kCFCoreFoundationVersionNumber > kCFCoreFoundationVersionNumber_iOS_6_1)
|
#define AS_AT_LEAST_IOS7 (kCFCoreFoundationVersionNumber > kCFCoreFoundationVersionNumber_iOS_6_1)
|
||||||
#define AS_AT_LEAST_IOS7_1 (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_7_1)
|
#define AS_AT_LEAST_IOS7_1 (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_7_1)
|
||||||
#define AS_AT_LEAST_IOS8 (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_8_0)
|
#define AS_AT_LEAST_IOS8 (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_8_0)
|
||||||
|
#define AS_AT_LEAST_IOS9 (kCFCoreFoundationVersionNumber > kCFCoreFoundationVersionNumber_iOS_8_4)
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#import "CollectionViewController.h"
|
#import "CollectionViewController.h"
|
||||||
#import "KittenNode.h"
|
#import "KittenNode.h"
|
||||||
|
#import <AsyncDisplayKit/ASDisplayTraits.h>
|
||||||
|
|
||||||
@interface CollectionViewController () <ASCollectionDelegate, ASCollectionDataSource>
|
@interface CollectionViewController () <ASCollectionDelegate, ASCollectionDataSource>
|
||||||
@property (nonatomic, strong) ASCollectionNode *collectionNode;
|
@property (nonatomic, strong) ASCollectionNode *collectionNode;
|
||||||
@@ -61,7 +62,7 @@
|
|||||||
|
|
||||||
- (ASSizeRange)collectionView:(ASCollectionView *)collectionView constrainedSizeForNodeAtIndexPath:(NSIndexPath *)indexPath
|
- (ASSizeRange)collectionView:(ASCollectionView *)collectionView constrainedSizeForNodeAtIndexPath:(NSIndexPath *)indexPath
|
||||||
{
|
{
|
||||||
ASEnvironmentDisplayTraits displayTraits = self.collectionNode.environmentState.displayTraits;
|
ASDisplayTraits *displayTraits = [self.collectionNode displayTraits];
|
||||||
|
|
||||||
if (displayTraits.horizontalSizeClass == UIUserInterfaceSizeClassRegular) {
|
if (displayTraits.horizontalSizeClass == UIUserInterfaceSizeClassRegular) {
|
||||||
return ASSizeRangeMake(CGSizeMake(200, 120), CGSizeMake(200, 120));
|
return ASSizeRangeMake(CGSizeMake(200, 120), CGSizeMake(200, 120));
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
#import "KittenNode.h"
|
#import "KittenNode.h"
|
||||||
#import "OverrideViewController.h"
|
#import "OverrideViewController.h"
|
||||||
|
|
||||||
|
#import <AsyncDisplayKit/ASDisplayTraits.h>
|
||||||
|
|
||||||
static const CGFloat kOuterPadding = 16.0f;
|
static const CGFloat kOuterPadding = 16.0f;
|
||||||
static const CGFloat kInnerPadding = 10.0f;
|
static const CGFloat kInnerPadding = 10.0f;
|
||||||
|
|
||||||
@@ -128,8 +130,7 @@ static const CGFloat kInnerPadding = 10.0f;
|
|||||||
|
|
||||||
- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constrainedSize
|
- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constrainedSize
|
||||||
{
|
{
|
||||||
|
ASDisplayTraits *displayTraits = [self displayTraits];
|
||||||
ASEnvironmentDisplayTraits displayTraits = self.environmentState.displayTraits;
|
|
||||||
|
|
||||||
ASStackLayoutSpec *stackSpec = [[ASStackLayoutSpec alloc] init];
|
ASStackLayoutSpec *stackSpec = [[ASStackLayoutSpec alloc] init];
|
||||||
stackSpec.spacing = kInnerPadding;
|
stackSpec.spacing = kInnerPadding;
|
||||||
@@ -146,19 +147,15 @@ static const CGFloat kInnerPadding = 10.0f;
|
|||||||
return [ASInsetLayoutSpec insetLayoutSpecWithInsets:UIEdgeInsetsMake(kOuterPadding, kOuterPadding, kOuterPadding, kOuterPadding) child:stackSpec];
|
return [ASInsetLayoutSpec insetLayoutSpecWithInsets:UIEdgeInsetsMake(kOuterPadding, kOuterPadding, kOuterPadding, kOuterPadding) child:stackSpec];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
+ (void)defaultImageTappedAction:(ASViewController *)sourceViewController
|
+ (void)defaultImageTappedAction:(ASViewController *)sourceViewController
|
||||||
{
|
{
|
||||||
OverrideViewController *overrideVC = [[OverrideViewController alloc] init];
|
OverrideViewController *overrideVC = [[OverrideViewController alloc] init];
|
||||||
|
|
||||||
overrideVC.overrideDisplayTraitsWithTraitCollection = ^(UITraitCollection *traitCollection) {
|
overrideVC.overrideDisplayTraitsWithTraitCollection = ^(UITraitCollection *traitCollection) {
|
||||||
return (ASEnvironmentDisplayTraits) {
|
ASDisplayTraits *displayTraits = [ASDisplayTraits displayTraitsWithUITraitCollection:traitCollection];
|
||||||
.displayScale = traitCollection.displayScale,
|
displayTraits.horizontalSizeClass = UIUserInterfaceSizeClassCompact;
|
||||||
.horizontalSizeClass = UIUserInterfaceSizeClassCompact,
|
displayTraits.verticalSizeClass = UIUserInterfaceSizeClassCompact;
|
||||||
.userInterfaceIdiom = traitCollection.userInterfaceIdiom,
|
return displayTraits;
|
||||||
.verticalSizeClass = UIUserInterfaceSizeClassCompact,
|
|
||||||
.forceTouchCapability = traitCollection.forceTouchCapability,
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
[sourceViewController presentViewController:overrideVC animated:YES completion:nil];
|
[sourceViewController presentViewController:overrideVC animated:YES completion:nil];
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#import "OverrideViewController.h"
|
#import "OverrideViewController.h"
|
||||||
|
#import <AsyncDisplayKit/ASDisplayTraits.h>
|
||||||
|
|
||||||
static NSString *kLinkAttributeName = @"PlaceKittenNodeLinkAttributeName";
|
static NSString *kLinkAttributeName = @"PlaceKittenNodeLinkAttributeName";
|
||||||
|
|
||||||
@interface OverrideNode()
|
@interface OverrideNode()
|
||||||
@@ -42,7 +44,7 @@ static NSString *kLinkAttributeName = @"PlaceKittenNodeLinkAttributeName";
|
|||||||
- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constrainedSize
|
- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constrainedSize
|
||||||
{
|
{
|
||||||
CGFloat pointSize = 16.f;
|
CGFloat pointSize = 16.f;
|
||||||
ASEnvironmentDisplayTraits displayTraits = self.environmentState.displayTraits;
|
ASDisplayTraits *displayTraits = [self displayTraits];
|
||||||
if (displayTraits.horizontalSizeClass == UIUserInterfaceSizeClassRegular) {
|
if (displayTraits.horizontalSizeClass == UIUserInterfaceSizeClassRegular) {
|
||||||
// This should never happen because we override the VC's display traits to always be compact.
|
// This should never happen because we override the VC's display traits to always be compact.
|
||||||
pointSize = 100;
|
pointSize = 100;
|
||||||
|
|||||||
Reference in New Issue
Block a user