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, ); }; };
|
||||
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, ); }; };
|
||||
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 */; };
|
||||
9C8221961BA237B80037F19A /* ASStackBaselinePositionedLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C8221931BA237B80037F19A /* ASStackBaselinePositionedLayout.h */; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
@@ -1223,6 +1229,8 @@
|
||||
205F0E0D1B371875007741D0 /* UICollectionViewLayout+ASConvenience.h */,
|
||||
205F0E0E1B371875007741D0 /* UICollectionViewLayout+ASConvenience.m */,
|
||||
058D09FF195D050800B7D73C /* UIView+ASConvenience.h */,
|
||||
9C70F2011CDA4EFA007D6C76 /* ASDisplayTraits.h */,
|
||||
9C70F2021CDA4EFA007D6C76 /* ASDisplayTraits.m */,
|
||||
);
|
||||
path = Details;
|
||||
sourceTree = "<group>";
|
||||
@@ -1520,6 +1528,7 @@
|
||||
257754A81BEE44CD00737CA5 /* ASTextKitContext.h in Headers */,
|
||||
DB55C2611C6408D6004EDCF5 /* _ASTransitionContext.h in Headers */,
|
||||
464052221A3F83C40061C0BA /* ASFlowLayoutController.h in Headers */,
|
||||
9C70F2031CDA4EFA007D6C76 /* ASDisplayTraits.h in Headers */,
|
||||
257754AF1BEE44CD00737CA5 /* ASTextKitRenderer+TextChecking.h in Headers */,
|
||||
058D0A57195D05DC00B7D73C /* ASHighlightOverlayLayer.h in Headers */,
|
||||
058D0A7C195D05F900B7D73C /* ASImageNode+CGExtras.h in Headers */,
|
||||
@@ -1656,6 +1665,7 @@
|
||||
34EFC75B1B701BAF00AD841F /* ASDimension.h in Headers */,
|
||||
A37320101C571B740011FC94 /* ASTextNode+Beta.h in Headers */,
|
||||
DBABFAFC1C6A8D2F0039EA4A /* _ASTransitionContext.h in Headers */,
|
||||
9C70F2061CDA4F0C007D6C76 /* ASDisplayTraits.h in Headers */,
|
||||
254C6B801BF94DF4003EC431 /* ASEqualityHashHelpers.h in Headers */,
|
||||
B350624F1B010EFD0018CF92 /* ASDisplayNode+DebugTiming.h in Headers */,
|
||||
B35061FD1B010EFD0018CF92 /* ASDisplayNode+Subclasses.h in Headers */,
|
||||
@@ -2043,6 +2053,7 @@
|
||||
ACF6ED521B17847A00DA7C62 /* ASStackUnpositionedLayout.mm in Sources */,
|
||||
257754A61BEE44CD00737CA5 /* ASTextKitAttributes.mm in Sources */,
|
||||
81EE38501C8E94F000456208 /* ASRunLoopQueue.mm in Sources */,
|
||||
9C70F2041CDA4EFA007D6C76 /* ASDisplayTraits.m in Sources */,
|
||||
92074A691CC8BADA00918F75 /* ASControlNode+tvOS.m in Sources */,
|
||||
ACF6ED321B17843500DA7C62 /* ASStaticLayoutSpec.mm in Sources */,
|
||||
AC026B6B1BD57D6F00BBC17E /* ASChangeSetDataController.m in Sources */,
|
||||
@@ -2193,6 +2204,7 @@
|
||||
34EFC7721B701D0300AD841F /* ASStackLayoutSpec.mm in Sources */,
|
||||
34EFC7761B701D2A00AD841F /* ASStackPositionedLayout.mm in Sources */,
|
||||
7AB338661C55B3420055FDE8 /* ASRelativeLayoutSpec.mm in Sources */,
|
||||
9C70F2051CDA4F06007D6C76 /* ASDisplayTraits.m in Sources */,
|
||||
34EFC7781B701D3100AD841F /* ASStackUnpositionedLayout.mm in Sources */,
|
||||
DE84918E1C8FFF9F003D89E9 /* ASRunLoopQueue.mm in Sources */,
|
||||
AC026B6C1BD57D6F00BBC17E /* ASChangeSetDataController.m in Sources */,
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#import "_ASCoreAnimationExtras.h"
|
||||
#import "ASDisplayNodeLayoutContext.h"
|
||||
#import "ASDisplayNodeExtras.h"
|
||||
#import "ASDisplayTraits.h"
|
||||
#import "ASEqualityHelpers.h"
|
||||
#import "ASRunLoopQueue.h"
|
||||
#import "ASEnvironmentInternal.h"
|
||||
@@ -2720,6 +2721,11 @@ static const char *ASDisplayNodeDrawingPriorityKey = "ASDrawingPriority";
|
||||
ASEnvironmentLayoutOptionsForwarding
|
||||
ASEnvironmentLayoutExtensibilityForwarding
|
||||
|
||||
- (ASDisplayTraits *)displayTraits
|
||||
{
|
||||
ASDN::MutexLocker l(_propertyLock);
|
||||
return [ASDisplayTraits displayTraitsWithASEnvironmentDisplayTraits:_environmentState.displayTraits];
|
||||
}
|
||||
|
||||
#if TARGET_OS_TV
|
||||
#pragma mark - UIFocusEnvironment Protocol (tvOS)
|
||||
|
||||
@@ -9,10 +9,12 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AsyncDisplayKit/ASDisplayNode.h>
|
||||
|
||||
@class ASDisplayTraits;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef ASEnvironmentDisplayTraits (^ASEnvironmentDisplayTraitsForTraitCollectionBlock)(UITraitCollection *traitCollection);
|
||||
typedef ASEnvironmentDisplayTraits (^ASEnvironmentDisplayTraitsForTraitWindowSizeBlock)(CGSize windowSize);
|
||||
typedef ASDisplayTraits * _Nonnull (^ASDisplayTraitsForTraitCollectionBlock)(UITraitCollection *traitCollection);
|
||||
typedef ASDisplayTraits * _Nonnull (^ASDisplayTraitsForTraitWindowSizeBlock)(CGSize windowSize);
|
||||
|
||||
@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.
|
||||
*/
|
||||
@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.
|
||||
*/
|
||||
@property (nonatomic, copy) ASEnvironmentDisplayTraitsForTraitWindowSizeBlock overrideDisplayTraitsWithWindowSize;
|
||||
@property (nonatomic, copy) ASDisplayTraitsForTraitWindowSizeBlock overrideDisplayTraitsWithWindowSize;
|
||||
|
||||
/**
|
||||
* @abstract Passthrough property to the the .interfaceState of the node.
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#import "ASDimension.h"
|
||||
#import "ASDisplayNode+FrameworkPrivate.h"
|
||||
#import "ASDisplayNode+Beta.h"
|
||||
#import "ASDisplayTraits.h"
|
||||
#import "ASEnvironmentInternal.h"
|
||||
#import "ASRangeControllerUpdateRangeProtocol+Beta.h"
|
||||
|
||||
@@ -146,7 +147,9 @@
|
||||
- (ASEnvironmentDisplayTraits)displayTraitsForTraitCollection:(UITraitCollection *)traitCollection
|
||||
{
|
||||
if (self.overrideDisplayTraitsWithTraitCollection) {
|
||||
return self.overrideDisplayTraitsWithTraitCollection(traitCollection);
|
||||
ASDisplayTraits *displayTraits = self.overrideDisplayTraitsWithTraitCollection(traitCollection);
|
||||
displayTraits.isMutable = NO;
|
||||
return [displayTraits environmentDisplayTraits];
|
||||
}
|
||||
|
||||
ASEnvironmentDisplayTraits displayTraits = ASEnvironmentDisplayTraitsFromUITraitCollection(traitCollection);
|
||||
@@ -157,7 +160,9 @@
|
||||
- (ASEnvironmentDisplayTraits)displayTraitsForWindowSize:(CGSize)windowSize
|
||||
{
|
||||
if (self.overrideDisplayTraitsWithWindowSize) {
|
||||
return self.overrideDisplayTraitsWithWindowSize(windowSize);
|
||||
ASDisplayTraits *displayTraits = self.overrideDisplayTraitsWithWindowSize(windowSize);
|
||||
displayTraits.isMutable = NO;
|
||||
return [displayTraits environmentDisplayTraits];
|
||||
}
|
||||
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.
|
||||
//
|
||||
// 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
|
||||
// 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
|
||||
// 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.
|
||||
//__unsafe_unretained id displayContext;
|
||||
id __unsafe_unretained displayContext;
|
||||
} ASEnvironmentDisplayTraits;
|
||||
|
||||
@@ -104,7 +103,7 @@ extern ASEnvironmentState ASEnvironmentStateMakeDefault();
|
||||
|
||||
ASDISPLAYNODE_EXTERN_C_END
|
||||
|
||||
@class ASTraitCollection;
|
||||
@class ASDisplayTraits;
|
||||
|
||||
#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
|
||||
- (BOOL)supportsTraitsCollectionPropagation;
|
||||
|
||||
/// Returns an NSObject-representation of the environment's ASEnvironmentDisplayTraits
|
||||
- (ASDisplayTraits *)displayTraits;
|
||||
|
||||
@end
|
||||
|
||||
// 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 "ASEnvironmentInternal.h"
|
||||
#import <AsyncDisplayKit/ASAvailability.h>
|
||||
|
||||
ASEnvironmentLayoutOptionsState _ASEnvironmentLayoutOptionsStateMakeDefault()
|
||||
{
|
||||
@@ -46,14 +47,18 @@ ASEnvironmentDisplayTraits _ASEnvironmentDisplayTraitsMakeDefault()
|
||||
}
|
||||
|
||||
ASEnvironmentDisplayTraits ASEnvironmentDisplayTraitsFromUITraitCollection(UITraitCollection *traitCollection)
|
||||
{
|
||||
return (ASEnvironmentDisplayTraits) {
|
||||
.displayScale = traitCollection.displayScale,
|
||||
.horizontalSizeClass = traitCollection.horizontalSizeClass,
|
||||
.userInterfaceIdiom = traitCollection.userInterfaceIdiom,
|
||||
.verticalSizeClass = traitCollection.verticalSizeClass,
|
||||
.forceTouchCapability = traitCollection.forceTouchCapability,
|
||||
};
|
||||
{
|
||||
ASEnvironmentDisplayTraits displayTraits;
|
||||
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;
|
||||
}
|
||||
|
||||
BOOL ASEnvironmentDisplayTraitsIsEqualToASEnvironmentDisplayTraits(ASEnvironmentDisplayTraits displayTraits0, ASEnvironmentDisplayTraits displayTraits1)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#import "ASAssert.h"
|
||||
#import "ASBaseDefines.h"
|
||||
#import "ASDisplayTraits.h"
|
||||
#import "ASEnvironmentInternal.h"
|
||||
|
||||
#import "ASInternalHelpers.h"
|
||||
@@ -203,6 +204,12 @@
|
||||
ASEnvironmentLayoutOptionsForwarding
|
||||
ASEnvironmentLayoutExtensibilityForwarding
|
||||
|
||||
- (ASDisplayTraits *)displayTraits
|
||||
{
|
||||
ASDN::MutexLocker l(_propertyLock);
|
||||
return [ASDisplayTraits displayTraitsWithASEnvironmentDisplayTraits:_environmentState.displayTraits];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation ASLayoutSpec (Debugging)
|
||||
|
||||
@@ -23,6 +23,10 @@
|
||||
#define kCFCoreFoundationVersionNumber_iOS_8_0 1140.1
|
||||
#endif
|
||||
|
||||
#ifndef kCFCoreFoundationVersionNumber_iOS_8_4
|
||||
#define kCFCoreFoundationVersionNumber_iOS_8_4 1145.15
|
||||
#endif
|
||||
|
||||
#ifndef __IPHONE_7_0
|
||||
#define __IPHONE_7_0 70000
|
||||
#endif
|
||||
@@ -31,6 +35,10 @@
|
||||
#define __IPHONE_8_0 80000
|
||||
#endif
|
||||
|
||||
#ifndef __IPHONE_9_0
|
||||
#define __IPHONE_9_0 90000
|
||||
#endif
|
||||
|
||||
#ifndef AS_IOS8_SDK_OR_LATER
|
||||
#define AS_IOS8_SDK_OR_LATER __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0
|
||||
#endif
|
||||
@@ -38,3 +46,4 @@
|
||||
#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_IOS8 (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_8_0)
|
||||
#define AS_AT_LEAST_IOS9 (kCFCoreFoundationVersionNumber > kCFCoreFoundationVersionNumber_iOS_8_4)
|
||||
|
||||
@@ -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