mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
[iOS11] Update project settings and fix errors (#676)
* [iOS11] Update project settings and fix errors * update changelog * resolve comments
This commit is contained in:
@@ -2443,14 +2443,20 @@
|
|||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES_ERROR;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES_ERROR;
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
@@ -2488,14 +2494,20 @@
|
|||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES_ERROR;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES_ERROR;
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
@@ -2631,14 +2643,20 @@
|
|||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES_ERROR;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES_ERROR;
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
## master
|
## master
|
||||||
* Add your own contributions to the next release on the line below this with your name.
|
* Add your own contributions to the next release on the line below this with your name.
|
||||||
|
- [iOS11] Update project settings and fix errors [Eke](https://github.com/Eke) [#676](https://github.com/TextureGroup/Texture/pull/676)
|
||||||
- [ASCollectionView] Improve performance and behavior of rotation / bounds changes. [Scott Goodson](https://github.com/appleguy) [#431](https://github.com/TextureGroup/Texture/pull/431)
|
- [ASCollectionView] Improve performance and behavior of rotation / bounds changes. [Scott Goodson](https://github.com/appleguy) [#431](https://github.com/TextureGroup/Texture/pull/431)
|
||||||
- [ASCollectionView] Improve index space translation of Flow Layout Delegate methods. [Scott Goodson](https://github.com/appleguy)
|
- [ASCollectionView] Improve index space translation of Flow Layout Delegate methods. [Scott Goodson](https://github.com/appleguy)
|
||||||
- [Animated Image] Adds support for animated WebP as well as improves GIF handling. [#605](https://github.com/TextureGroup/Texture/pull/605) [Garrett Moon](https://github.com/garrettmoon)
|
- [Animated Image] Adds support for animated WebP as well as improves GIF handling. [#605](https://github.com/TextureGroup/Texture/pull/605) [Garrett Moon](https://github.com/garrettmoon)
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ static NSString * const kReuseIdentifier = @"_ASCollectionReuseIdentifier";
|
|||||||
// Experiments done by Instagram show that this option being YES (default)
|
// Experiments done by Instagram show that this option being YES (default)
|
||||||
// when unused causes a significant hit to scroll performance.
|
// when unused causes a significant hit to scroll performance.
|
||||||
// https://github.com/Instagram/IGListKit/issues/318
|
// https://github.com/Instagram/IGListKit/issues/318
|
||||||
if (AS_AT_LEAST_IOS10) {
|
if (AS_AVAILABLE_IOS(10)) {
|
||||||
super.prefetchingEnabled = NO;
|
super.prefetchingEnabled = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1972,7 +1972,7 @@ static NSString * const kReuseIdentifier = @"_ASCollectionReuseIdentifier";
|
|||||||
/// The UIKit version of this method is only available on iOS >= 9
|
/// The UIKit version of this method is only available on iOS >= 9
|
||||||
- (NSArray<NSIndexPath *> *)asdk_indexPathsForVisibleSupplementaryElementsOfKind:(NSString *)kind
|
- (NSArray<NSIndexPath *> *)asdk_indexPathsForVisibleSupplementaryElementsOfKind:(NSString *)kind
|
||||||
{
|
{
|
||||||
if (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_9_0) {
|
if (AS_AVAILABLE_IOS(9)) {
|
||||||
return [self indexPathsForVisibleSupplementaryElementsOfKind:kind];
|
return [self indexPathsForVisibleSupplementaryElementsOfKind:kind];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -702,7 +702,7 @@ extern NSInteger const ASDefaultDrawingPriority;
|
|||||||
*/
|
*/
|
||||||
@property (nonatomic, assign) UIViewContentMode contentMode; // default=UIViewContentModeScaleToFill
|
@property (nonatomic, assign) UIViewContentMode contentMode; // default=UIViewContentModeScaleToFill
|
||||||
@property (nonatomic, copy) NSString *contentsGravity; // Use .contentMode in preference when possible.
|
@property (nonatomic, copy) NSString *contentsGravity; // Use .contentMode in preference when possible.
|
||||||
@property (nonatomic, assign) UISemanticContentAttribute semanticContentAttribute; // default=Unspecified
|
@property (nonatomic, assign) UISemanticContentAttribute semanticContentAttribute API_AVAILABLE(ios(9.0), tvos(9.0)); // default=Unspecified
|
||||||
|
|
||||||
@property (nonatomic, nullable) CGColorRef shadowColor; // default=opaque rgb black
|
@property (nonatomic, nullable) CGColorRef shadowColor; // default=opaque rgb black
|
||||||
@property (nonatomic, assign) CGFloat shadowOpacity; // default=0.0
|
@property (nonatomic, assign) CGFloat shadowOpacity; // default=0.0
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ NSString *const ASAnimatedImageDefaultRunLoopMode = NSRunLoopCommonModes;
|
|||||||
CFTimeInterval timeBetweenLastFire;
|
CFTimeInterval timeBetweenLastFire;
|
||||||
if (self.lastDisplayLinkFire == 0) {
|
if (self.lastDisplayLinkFire == 0) {
|
||||||
timeBetweenLastFire = 0;
|
timeBetweenLastFire = 0;
|
||||||
} else if (AS_AT_LEAST_IOS10){
|
} else if (AS_AVAILABLE_IOS(10)){
|
||||||
timeBetweenLastFire = displayLink.targetTimestamp - displayLink.timestamp;
|
timeBetweenLastFire = displayLink.targetTimestamp - displayLink.timestamp;
|
||||||
} else {
|
} else {
|
||||||
timeBetweenLastFire = CACurrentMediaTime() - self.lastDisplayLinkFire;
|
timeBetweenLastFire = CACurrentMediaTime() - self.lastDisplayLinkFire;
|
||||||
|
|||||||
@@ -539,7 +539,7 @@ static NSArray *DefaultLinkAttributeNames = @[ NSLinkAttributeName ];
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (id)_linkAttributeValueAtPoint:(CGPoint)point
|
- (id)_linkAttributeValueAtPoint:(CGPoint)point
|
||||||
attributeName:(out NSString **)attributeNameOut
|
attributeName:(out NSString * __autoreleasing *)attributeNameOut
|
||||||
range:(out NSRange *)rangeOut
|
range:(out NSRange *)rangeOut
|
||||||
inAdditionalTruncationMessage:(out BOOL *)inAdditionalTruncationMessageOut
|
inAdditionalTruncationMessage:(out BOOL *)inAdditionalTruncationMessageOut
|
||||||
forHighlighting:(BOOL)highlighting
|
forHighlighting:(BOOL)highlighting
|
||||||
|
|||||||
@@ -119,11 +119,44 @@ ASDISPLAYNODE_EXTERN_C_END
|
|||||||
* The logging macros are not guarded by deployment-target checks like the activity macros are, but they are
|
* The logging macros are not guarded by deployment-target checks like the activity macros are, but they are
|
||||||
* only available on iOS >= 9 at runtime, so just make them conditional.
|
* only available on iOS >= 9 at runtime, so just make them conditional.
|
||||||
*/
|
*/
|
||||||
#define as_log_create(subsystem, category) (AS_AT_LEAST_IOS9 ? os_log_create(subsystem, category) : (os_log_t)0)
|
|
||||||
#define as_log_debug(log, format, ...) (AS_AT_LEAST_IOS9 ? os_log_debug(log, format, ##__VA_ARGS__) : (void)0)
|
#define as_log_create(subsystem, category) ({ \
|
||||||
#define as_log_info(log, format, ...) (AS_AT_LEAST_IOS9 ? os_log_info(log, format, ##__VA_ARGS__) : (void)0)
|
os_log_t __val; \
|
||||||
#define as_log_error(log, format, ...) (AS_AT_LEAST_IOS9 ? os_log_error(log, format, ##__VA_ARGS__) : (void)0)
|
if (AS_AVAILABLE_IOS(9)) { \
|
||||||
#define as_log_fault(log, format, ...) (AS_AT_LEAST_IOS9 ? os_log_fault(log, format, ##__VA_ARGS__) : (void)0)
|
__val = os_log_create(subsystem, category); \
|
||||||
|
} else { \
|
||||||
|
__val = (os_log_t)0; \
|
||||||
|
} \
|
||||||
|
__val; \
|
||||||
|
})
|
||||||
|
|
||||||
|
#define as_log_debug(log, format, ...) \
|
||||||
|
if (AS_AVAILABLE_IOS(9)) { \
|
||||||
|
os_log_debug(log, format, ##__VA_ARGS__); \
|
||||||
|
} else { \
|
||||||
|
(void)0; \
|
||||||
|
} \
|
||||||
|
|
||||||
|
#define as_log_info(log, format, ...) \
|
||||||
|
if (AS_AVAILABLE_IOS(9)) { \
|
||||||
|
os_log_info(log, format, ##__VA_ARGS__); \
|
||||||
|
} else { \
|
||||||
|
(void)0; \
|
||||||
|
} \
|
||||||
|
|
||||||
|
#define as_log_error(log, format, ...) \
|
||||||
|
if (AS_AVAILABLE_IOS(9)) { \
|
||||||
|
os_log_error(log, format, ##__VA_ARGS__); \
|
||||||
|
} else { \
|
||||||
|
(void)0; \
|
||||||
|
} \
|
||||||
|
|
||||||
|
#define as_log_fault(log, format, ...) \
|
||||||
|
if (AS_AVAILABLE_IOS(9)) { \
|
||||||
|
os_log_fault(log, format, ##__VA_ARGS__); \
|
||||||
|
} else { \
|
||||||
|
(void)0; \
|
||||||
|
} \
|
||||||
|
|
||||||
#if ASEnableVerboseLogging
|
#if ASEnableVerboseLogging
|
||||||
#define as_log_verbose(log, format, ...) as_log_debug(log, format, ##__VA_ARGS__)
|
#define as_log_verbose(log, format, ...) as_log_debug(log, format, ##__VA_ARGS__)
|
||||||
|
|||||||
@@ -248,7 +248,7 @@ extern NSString * const ASCollectionInvalidUpdateException;
|
|||||||
* The invalidationBlock is called after flushing the ASMainSerialQueue, which ensures that any in-progress
|
* The invalidationBlock is called after flushing the ASMainSerialQueue, which ensures that any in-progress
|
||||||
* layout calculations have been applied. The block will not be called if data hasn't been loaded.
|
* layout calculations have been applied. The block will not be called if data hasn't been loaded.
|
||||||
*/
|
*/
|
||||||
- (void)relayoutAllNodesWithInvalidationBlock:(nullable void (^)())invalidationBlock;
|
- (void)relayoutAllNodesWithInvalidationBlock:(nullable void (^)(void))invalidationBlock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Re-measures given nodes in the backing store.
|
* Re-measures given nodes in the backing store.
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ static ASPINRemoteImageDownloader *sharedDownloader = nil;
|
|||||||
* If queue is nil, assert and perform now.
|
* If queue is nil, assert and perform now.
|
||||||
* Otherwise, dispatch async to queue.
|
* Otherwise, dispatch async to queue.
|
||||||
*/
|
*/
|
||||||
+ (void)_performWithCallbackQueue:(dispatch_queue_t)queue work:(void (^)())work
|
+ (void)_performWithCallbackQueue:(dispatch_queue_t)queue work:(void (^)(void))work
|
||||||
{
|
{
|
||||||
if (work == nil) {
|
if (work == nil) {
|
||||||
// No need to assert here, really. We aren't expecting any feedback from this method.
|
// No need to assert here, really. We aren't expecting any feedback from this method.
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ ASPrimitiveTraitCollection ASPrimitiveTraitCollectionFromUITraitCollection(UITra
|
|||||||
environmentTraitCollection.horizontalSizeClass = traitCollection.horizontalSizeClass;
|
environmentTraitCollection.horizontalSizeClass = traitCollection.horizontalSizeClass;
|
||||||
environmentTraitCollection.verticalSizeClass = traitCollection.verticalSizeClass;
|
environmentTraitCollection.verticalSizeClass = traitCollection.verticalSizeClass;
|
||||||
environmentTraitCollection.userInterfaceIdiom = traitCollection.userInterfaceIdiom;
|
environmentTraitCollection.userInterfaceIdiom = traitCollection.userInterfaceIdiom;
|
||||||
if (AS_AT_LEAST_IOS9) {
|
if (AS_AVAILABLE_IOS(9)) {
|
||||||
environmentTraitCollection.forceTouchCapability = traitCollection.forceTouchCapability;
|
environmentTraitCollection.forceTouchCapability = traitCollection.forceTouchCapability;
|
||||||
}
|
}
|
||||||
return environmentTraitCollection;
|
return environmentTraitCollection;
|
||||||
@@ -67,17 +67,28 @@ BOOL ASPrimitiveTraitCollectionIsEqualToASPrimitiveTraitCollection(ASPrimitiveTr
|
|||||||
|
|
||||||
// Named so as not to conflict with a hidden Apple function, in case compiler decides not to inline
|
// Named so as not to conflict with a hidden Apple function, in case compiler decides not to inline
|
||||||
ASDISPLAYNODE_INLINE NSString *AS_NSStringFromUIUserInterfaceIdiom(UIUserInterfaceIdiom idiom) {
|
ASDISPLAYNODE_INLINE NSString *AS_NSStringFromUIUserInterfaceIdiom(UIUserInterfaceIdiom idiom) {
|
||||||
switch (idiom) {
|
if (AS_AVAILABLE_IOS(9)) {
|
||||||
case UIUserInterfaceIdiomTV:
|
switch (idiom) {
|
||||||
return @"TV";
|
case UIUserInterfaceIdiomTV:
|
||||||
case UIUserInterfaceIdiomPad:
|
return @"TV";
|
||||||
return @"Pad";
|
case UIUserInterfaceIdiomPad:
|
||||||
case UIUserInterfaceIdiomPhone:
|
return @"Pad";
|
||||||
return @"Phone";
|
case UIUserInterfaceIdiomPhone:
|
||||||
case UIUserInterfaceIdiomCarPlay:
|
return @"Phone";
|
||||||
return @"CarPlay";
|
case UIUserInterfaceIdiomCarPlay:
|
||||||
default:
|
return @"CarPlay";
|
||||||
return @"Unspecified";
|
default:
|
||||||
|
return @"Unspecified";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (idiom) {
|
||||||
|
case UIUserInterfaceIdiomPad:
|
||||||
|
return @"Pad";
|
||||||
|
case UIUserInterfaceIdiomPhone:
|
||||||
|
return @"Phone";
|
||||||
|
default:
|
||||||
|
return @"Unspecified";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,7 +178,10 @@ NSString *NSStringFromASPrimitiveTraitCollection(ASPrimitiveTraitCollection trai
|
|||||||
+ (instancetype)traitCollectionWithUITraitCollection:(UITraitCollection *)traitCollection
|
+ (instancetype)traitCollectionWithUITraitCollection:(UITraitCollection *)traitCollection
|
||||||
containerSize:(CGSize)windowSize
|
containerSize:(CGSize)windowSize
|
||||||
{
|
{
|
||||||
UIForceTouchCapability forceTouch = AS_AT_LEAST_IOS9 ? traitCollection.forceTouchCapability : UIForceTouchCapabilityUnknown;
|
UIForceTouchCapability forceTouch = UIForceTouchCapabilityUnknown;
|
||||||
|
if(AS_AVAILABLE_IOS(9)) {
|
||||||
|
forceTouch = traitCollection.forceTouchCapability;
|
||||||
|
}
|
||||||
return [self traitCollectionWithDisplayScale:traitCollection.displayScale
|
return [self traitCollectionWithDisplayScale:traitCollection.displayScale
|
||||||
userInterfaceIdiom:traitCollection.userInterfaceIdiom
|
userInterfaceIdiom:traitCollection.userInterfaceIdiom
|
||||||
horizontalSizeClass:traitCollection.horizontalSizeClass
|
horizontalSizeClass:traitCollection.horizontalSizeClass
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
@property (nonatomic, assign) CGRect bounds;
|
@property (nonatomic, assign) CGRect bounds;
|
||||||
@property (nonatomic, assign) CGRect frame; // Only for use with nodes wrapping synchronous views
|
@property (nonatomic, assign) CGRect frame; // Only for use with nodes wrapping synchronous views
|
||||||
@property (nonatomic, assign) UIViewContentMode contentMode;
|
@property (nonatomic, assign) UIViewContentMode contentMode;
|
||||||
@property (nonatomic, assign) UISemanticContentAttribute semanticContentAttribute;
|
@property (nonatomic, assign) UISemanticContentAttribute semanticContentAttribute API_AVAILABLE(ios(9.0), tvos(9.0));
|
||||||
@property (nonatomic, assign, getter=isUserInteractionEnabled) BOOL userInteractionEnabled;
|
@property (nonatomic, assign, getter=isUserInteractionEnabled) BOOL userInteractionEnabled;
|
||||||
@property (nonatomic, assign, getter=isExclusiveTouch) BOOL exclusiveTouch;
|
@property (nonatomic, assign, getter=isExclusiveTouch) BOOL exclusiveTouch;
|
||||||
@property (nonatomic, assign, getter=asyncdisplaykit_isAsyncTransactionContainer, setter = asyncdisplaykit_setAsyncTransactionContainer:) BOOL asyncdisplaykit_asyncTransactionContainer;
|
@property (nonatomic, assign, getter=asyncdisplaykit_isAsyncTransactionContainer, setter = asyncdisplaykit_setAsyncTransactionContainer:) BOOL asyncdisplaykit_asyncTransactionContainer;
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
* the main thread.
|
* the main thread.
|
||||||
* @warning This method is substantially more expensive than UITableView's version.
|
* @warning This method is substantially more expensive than UITableView's version.
|
||||||
*/
|
*/
|
||||||
-(void)reloadDataWithCompletion:(void (^ _Nullable)())completion;
|
-(void)reloadDataWithCompletion:(void (^ _Nullable)(void))completion;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reload everything from scratch, destroying the working range and all cached nodes.
|
* Reload everything from scratch, destroying the working range and all cached nodes.
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ typedef struct {
|
|||||||
NSArray *accessibilityHeaderElements;
|
NSArray *accessibilityHeaderElements;
|
||||||
CGPoint accessibilityActivationPoint;
|
CGPoint accessibilityActivationPoint;
|
||||||
UIBezierPath *accessibilityPath;
|
UIBezierPath *accessibilityPath;
|
||||||
UISemanticContentAttribute semanticContentAttribute;
|
UISemanticContentAttribute semanticContentAttribute API_AVAILABLE(ios(9.0), tvos(9.0));
|
||||||
|
|
||||||
ASPendingStateFlags _flags;
|
ASPendingStateFlags _flags;
|
||||||
}
|
}
|
||||||
@@ -295,7 +295,9 @@ static BOOL defaultAllowsEdgeAntialiasing = NO;
|
|||||||
accessibilityActivationPoint = CGPointZero;
|
accessibilityActivationPoint = CGPointZero;
|
||||||
accessibilityPath = nil;
|
accessibilityPath = nil;
|
||||||
edgeAntialiasingMask = (kCALayerLeftEdge | kCALayerRightEdge | kCALayerTopEdge | kCALayerBottomEdge);
|
edgeAntialiasingMask = (kCALayerLeftEdge | kCALayerRightEdge | kCALayerTopEdge | kCALayerBottomEdge);
|
||||||
semanticContentAttribute = UISemanticContentAttributeUnspecified;
|
if (AS_AVAILABLE_IOS(9)) {
|
||||||
|
semanticContentAttribute = UISemanticContentAttributeUnspecified;
|
||||||
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@@ -573,7 +575,7 @@ static BOOL defaultAllowsEdgeAntialiasing = NO;
|
|||||||
_flags.setAsyncTransactionContainer = YES;
|
_flags.setAsyncTransactionContainer = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setSemanticContentAttribute:(UISemanticContentAttribute)attribute {
|
- (void)setSemanticContentAttribute:(UISemanticContentAttribute)attribute API_AVAILABLE(ios(9.0), tvos(9.0)) {
|
||||||
semanticContentAttribute = attribute;
|
semanticContentAttribute = attribute;
|
||||||
_flags.setSemanticContentAttribute = YES;
|
_flags.setSemanticContentAttribute = YES;
|
||||||
}
|
}
|
||||||
@@ -1049,8 +1051,10 @@ static BOOL defaultAllowsEdgeAntialiasing = NO;
|
|||||||
if (flags.setOpaque)
|
if (flags.setOpaque)
|
||||||
ASDisplayNodeAssert(layer.opaque == opaque, @"Didn't set opaque as desired");
|
ASDisplayNodeAssert(layer.opaque == opaque, @"Didn't set opaque as desired");
|
||||||
|
|
||||||
if (flags.setSemanticContentAttribute) {
|
if (AS_AVAILABLE_IOS(9)) {
|
||||||
view.semanticContentAttribute = semanticContentAttribute;
|
if (flags.setSemanticContentAttribute) {
|
||||||
|
view.semanticContentAttribute = semanticContentAttribute;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags.setIsAccessibilityElement)
|
if (flags.setIsAccessibilityElement)
|
||||||
@@ -1211,7 +1215,9 @@ static BOOL defaultAllowsEdgeAntialiasing = NO;
|
|||||||
pendingState.allowsGroupOpacity = layer.allowsGroupOpacity;
|
pendingState.allowsGroupOpacity = layer.allowsGroupOpacity;
|
||||||
pendingState.allowsEdgeAntialiasing = layer.allowsEdgeAntialiasing;
|
pendingState.allowsEdgeAntialiasing = layer.allowsEdgeAntialiasing;
|
||||||
pendingState.edgeAntialiasingMask = layer.edgeAntialiasingMask;
|
pendingState.edgeAntialiasingMask = layer.edgeAntialiasingMask;
|
||||||
pendingState.semanticContentAttribute = view.semanticContentAttribute;
|
if (AS_AVAILABLE_IOS(9)) {
|
||||||
|
pendingState.semanticContentAttribute = view.semanticContentAttribute;
|
||||||
|
}
|
||||||
pendingState.isAccessibilityElement = view.isAccessibilityElement;
|
pendingState.isAccessibilityElement = view.isAccessibilityElement;
|
||||||
pendingState.accessibilityLabel = view.accessibilityLabel;
|
pendingState.accessibilityLabel = view.accessibilityLabel;
|
||||||
pendingState.accessibilityHint = view.accessibilityHint;
|
pendingState.accessibilityHint = view.accessibilityHint;
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ typedef NS_ENUM(NSUInteger, _ASDisplayLayerTestDelegateClassModes) {
|
|||||||
|
|
||||||
// for _ASDisplayLayerTestDelegateModeClassDisplay
|
// for _ASDisplayLayerTestDelegateModeClassDisplay
|
||||||
@property (nonatomic, assign) NSUInteger displayCount;
|
@property (nonatomic, assign) NSUInteger displayCount;
|
||||||
@property (nonatomic, copy) UIImage *(^displayLayerBlock)();
|
@property (nonatomic, copy) UIImage *(^displayLayerBlock)(void);
|
||||||
|
|
||||||
// for _ASDisplayLayerTestDelegateModeClassDrawInContext
|
// for _ASDisplayLayerTestDelegateModeClassDrawInContext
|
||||||
@property (nonatomic, assign) NSUInteger drawRectCount;
|
@property (nonatomic, assign) NSUInteger drawRectCount;
|
||||||
@@ -472,7 +472,7 @@ static _ASDisplayLayerTestDelegateClassModes _class_modes;
|
|||||||
layer1.displaysAsynchronously = YES;
|
layer1.displaysAsynchronously = YES;
|
||||||
|
|
||||||
dispatch_semaphore_t displayAsyncLayer1Sema = dispatch_semaphore_create(0);
|
dispatch_semaphore_t displayAsyncLayer1Sema = dispatch_semaphore_create(0);
|
||||||
layer1Delegate.displayLayerBlock = ^(_ASDisplayLayer *asyncLayer) {
|
layer1Delegate.displayLayerBlock = ^UIImage *{
|
||||||
dispatch_semaphore_wait(displayAsyncLayer1Sema, DISPATCH_TIME_FOREVER);
|
dispatch_semaphore_wait(displayAsyncLayer1Sema, DISPATCH_TIME_FOREVER);
|
||||||
return bogusImage();
|
return bogusImage();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -711,46 +711,54 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
CGPoint originalPoint = CGPointZero, convertedPoint = CGPointZero, correctPoint = CGPointZero;
|
CGPoint originalPoint = CGPointZero, convertedPoint = CGPointZero, correctPoint = CGPointZero;
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point *FROM* outer node's coordinate space to inner node's coordinate space
|
// Convert point *FROM* outer node's coordinate space to inner node's coordinate space
|
||||||
node.frame = CGRectMake(100, 100, 100, 100);
|
node.frame = CGRectMake(100, 100, 100, 100);
|
||||||
innerNode.frame = CGRectMake(10, 10, 20, 20);
|
innerNode.frame = CGRectMake(10, 10, 20, 20);
|
||||||
originalPoint = CGPointMake(105, 105), correctPoint = CGPointMake(95, 95);
|
originalPoint = CGPointMake(105, 105);
|
||||||
|
correctPoint = CGPointMake(95, 95);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint fromNode:node selfNode:innerNode];
|
convertedPoint = [self checkConvertPoint:originalPoint fromNode:node selfNode:innerNode];
|
||||||
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point *FROM* inner node's coordinate space to outer node's coordinate space
|
// Convert point *FROM* inner node's coordinate space to outer node's coordinate space
|
||||||
node.frame = CGRectMake(100, 100, 100, 100);
|
node.frame = CGRectMake(100, 100, 100, 100);
|
||||||
innerNode.frame = CGRectMake(10, 10, 20, 20);
|
innerNode.frame = CGRectMake(10, 10, 20, 20);
|
||||||
originalPoint = CGPointMake(5, 5), correctPoint = CGPointMake(15, 15);
|
originalPoint = CGPointMake(5, 5);
|
||||||
|
correctPoint = CGPointMake(15, 15);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint fromNode:innerNode selfNode:node];
|
convertedPoint = [self checkConvertPoint:originalPoint fromNode:innerNode selfNode:node];
|
||||||
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point in inner node's coordinate space *TO* outer node's coordinate space
|
// Convert point in inner node's coordinate space *TO* outer node's coordinate space
|
||||||
node.frame = CGRectMake(100, 100, 100, 100);
|
node.frame = CGRectMake(100, 100, 100, 100);
|
||||||
innerNode.frame = CGRectMake(10, 10, 20, 20);
|
innerNode.frame = CGRectMake(10, 10, 20, 20);
|
||||||
originalPoint = CGPointMake(95, 95), correctPoint = CGPointMake(105, 105);
|
originalPoint = CGPointMake(95, 95);
|
||||||
|
correctPoint = CGPointMake(105, 105);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint toNode:node selfNode:innerNode];
|
convertedPoint = [self checkConvertPoint:originalPoint toNode:node selfNode:innerNode];
|
||||||
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point in outer node's coordinate space *TO* inner node's coordinate space
|
// Convert point in outer node's coordinate space *TO* inner node's coordinate space
|
||||||
node.frame = CGRectMake(0, 0, 100, 100);
|
node.frame = CGRectMake(0, 0, 100, 100);
|
||||||
innerNode.frame = CGRectMake(10, 10, 20, 20);
|
innerNode.frame = CGRectMake(10, 10, 20, 20);
|
||||||
originalPoint = CGPointMake(5, 5), correctPoint = CGPointMake(-5, -5);
|
originalPoint = CGPointMake(5, 5);
|
||||||
|
correctPoint = CGPointMake(-5, -5);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint toNode:innerNode selfNode:node];
|
convertedPoint = [self checkConvertPoint:originalPoint toNode:innerNode selfNode:node];
|
||||||
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
}
|
}
|
||||||
@@ -764,7 +772,8 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
CGPoint originalPoint = CGPointZero, convertedPoint = CGPointZero, correctPoint = CGPointZero;
|
CGPoint originalPoint = CGPointZero, convertedPoint = CGPointZero, correctPoint = CGPointZero;
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point *FROM* outer node's coordinate space to inner node's coordinate space
|
// Convert point *FROM* outer node's coordinate space to inner node's coordinate space
|
||||||
@@ -773,12 +782,14 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
node.bounds = CGRectMake(20, 20, 100, 100);
|
node.bounds = CGRectMake(20, 20, 100, 100);
|
||||||
innerNode.position = CGPointMake(23, 23);
|
innerNode.position = CGPointMake(23, 23);
|
||||||
innerNode.bounds = CGRectMake(17, 17, 20, 20);
|
innerNode.bounds = CGRectMake(17, 17, 20, 20);
|
||||||
originalPoint = CGPointMake(42, 42), correctPoint = CGPointMake(36, 36);
|
originalPoint = CGPointMake(42, 42);
|
||||||
|
correctPoint = CGPointMake(36, 36);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint fromNode:node selfNode:innerNode];
|
convertedPoint = [self checkConvertPoint:originalPoint fromNode:node selfNode:innerNode];
|
||||||
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point *FROM* inner node's coordinate space to outer node's coordinate space
|
// Convert point *FROM* inner node's coordinate space to outer node's coordinate space
|
||||||
@@ -787,12 +798,14 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
node.bounds = CGRectMake(-1000, -1000, 1337, 1337);
|
node.bounds = CGRectMake(-1000, -1000, 1337, 1337);
|
||||||
innerNode.position = CGPointMake(23, 23);
|
innerNode.position = CGPointMake(23, 23);
|
||||||
innerNode.bounds = CGRectMake(17, 17, 200, 200);
|
innerNode.bounds = CGRectMake(17, 17, 200, 200);
|
||||||
originalPoint = CGPointMake(5, 5), correctPoint = CGPointMake(11, 11);
|
originalPoint = CGPointMake(5, 5);
|
||||||
|
correctPoint = CGPointMake(11, 11);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint fromNode:innerNode selfNode:node];
|
convertedPoint = [self checkConvertPoint:originalPoint fromNode:innerNode selfNode:node];
|
||||||
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point in inner node's coordinate space *TO* outer node's coordinate space
|
// Convert point in inner node's coordinate space *TO* outer node's coordinate space
|
||||||
@@ -801,12 +814,14 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
node.bounds = CGRectMake(20, 20, 100, 100);
|
node.bounds = CGRectMake(20, 20, 100, 100);
|
||||||
innerNode.position = CGPointMake(23, 23);
|
innerNode.position = CGPointMake(23, 23);
|
||||||
innerNode.bounds = CGRectMake(17, 17, 20, 20);
|
innerNode.bounds = CGRectMake(17, 17, 20, 20);
|
||||||
originalPoint = CGPointMake(36, 36), correctPoint = CGPointMake(42, 42);
|
originalPoint = CGPointMake(36, 36);
|
||||||
|
correctPoint = CGPointMake(42, 42);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint toNode:node selfNode:innerNode];
|
convertedPoint = [self checkConvertPoint:originalPoint toNode:node selfNode:innerNode];
|
||||||
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point in outer node's coordinate space *TO* inner node's coordinate space
|
// Convert point in outer node's coordinate space *TO* inner node's coordinate space
|
||||||
@@ -815,7 +830,8 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
node.bounds = CGRectMake(-1000, -1000, 1337, 1337);
|
node.bounds = CGRectMake(-1000, -1000, 1337, 1337);
|
||||||
innerNode.position = CGPointMake(23, 23);
|
innerNode.position = CGPointMake(23, 23);
|
||||||
innerNode.bounds = CGRectMake(17, 17, 200, 200);
|
innerNode.bounds = CGRectMake(17, 17, 200, 200);
|
||||||
originalPoint = CGPointMake(11, 11), correctPoint = CGPointMake(5, 5);
|
originalPoint = CGPointMake(11, 11);
|
||||||
|
correctPoint = CGPointMake(5, 5);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint toNode:innerNode selfNode:node];
|
convertedPoint = [self checkConvertPoint:originalPoint toNode:innerNode selfNode:node];
|
||||||
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(CGPointEqualToPoint(convertedPoint, correctPoint), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
}
|
}
|
||||||
@@ -828,7 +844,8 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
CGPoint originalPoint = CGPointZero, convertedPoint = CGPointZero, correctPoint = CGPointZero;
|
CGPoint originalPoint = CGPointZero, convertedPoint = CGPointZero, correctPoint = CGPointZero;
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point *FROM* outer node's coordinate space to inner node's coordinate space
|
// Convert point *FROM* outer node's coordinate space to inner node's coordinate space
|
||||||
@@ -836,12 +853,14 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
innerNode.anchorPoint = CGPointMake(0.75, 1);
|
innerNode.anchorPoint = CGPointMake(0.75, 1);
|
||||||
innerNode.position = CGPointMake(23, 23);
|
innerNode.position = CGPointMake(23, 23);
|
||||||
innerNode.bounds = CGRectMake(17, 17, 20, 20);
|
innerNode.bounds = CGRectMake(17, 17, 20, 20);
|
||||||
originalPoint = CGPointMake(42, 42), correctPoint = CGPointMake(51, 56);
|
originalPoint = CGPointMake(42, 42);
|
||||||
|
correctPoint = CGPointMake(51, 56);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint fromNode:node selfNode:innerNode];
|
convertedPoint = [self checkConvertPoint:originalPoint fromNode:node selfNode:innerNode];
|
||||||
XCTAssertTrue(_CGPointEqualToPointWithEpsilon(convertedPoint, correctPoint, 0.001), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(_CGPointEqualToPointWithEpsilon(convertedPoint, correctPoint, 0.001), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point *FROM* inner node's coordinate space to outer node's coordinate space
|
// Convert point *FROM* inner node's coordinate space to outer node's coordinate space
|
||||||
@@ -849,12 +868,14 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
innerNode.anchorPoint = CGPointMake(0.3, 0.3);
|
innerNode.anchorPoint = CGPointMake(0.3, 0.3);
|
||||||
innerNode.position = CGPointMake(23, 23);
|
innerNode.position = CGPointMake(23, 23);
|
||||||
innerNode.bounds = CGRectMake(17, 17, 200, 200);
|
innerNode.bounds = CGRectMake(17, 17, 200, 200);
|
||||||
originalPoint = CGPointMake(55, 55), correctPoint = CGPointMake(1, 1);
|
originalPoint = CGPointMake(55, 55);
|
||||||
|
correctPoint = CGPointMake(1, 1);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint fromNode:innerNode selfNode:node];
|
convertedPoint = [self checkConvertPoint:originalPoint fromNode:innerNode selfNode:node];
|
||||||
XCTAssertTrue(_CGPointEqualToPointWithEpsilon(convertedPoint, correctPoint, 0.001), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(_CGPointEqualToPointWithEpsilon(convertedPoint, correctPoint, 0.001), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point in inner node's coordinate space *TO* outer node's coordinate space
|
// Convert point in inner node's coordinate space *TO* outer node's coordinate space
|
||||||
@@ -862,12 +883,14 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
innerNode.anchorPoint = CGPointMake(0.75, 1);
|
innerNode.anchorPoint = CGPointMake(0.75, 1);
|
||||||
innerNode.position = CGPointMake(23, 23);
|
innerNode.position = CGPointMake(23, 23);
|
||||||
innerNode.bounds = CGRectMake(17, 17, 20, 20);
|
innerNode.bounds = CGRectMake(17, 17, 20, 20);
|
||||||
originalPoint = CGPointMake(51, 56), correctPoint = CGPointMake(42, 42);
|
originalPoint = CGPointMake(51, 56);
|
||||||
|
correctPoint = CGPointMake(42, 42);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint toNode:node selfNode:innerNode];
|
convertedPoint = [self checkConvertPoint:originalPoint toNode:node selfNode:innerNode];
|
||||||
XCTAssertTrue(_CGPointEqualToPointWithEpsilon(convertedPoint, correctPoint, 0.001), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(_CGPointEqualToPointWithEpsilon(convertedPoint, correctPoint, 0.001), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
node = [[ASDisplayNode alloc] init], innerNode = [[ASDisplayNode alloc] init];
|
node = [[ASDisplayNode alloc] init];
|
||||||
|
innerNode = [[ASDisplayNode alloc] init];
|
||||||
[node addSubnode:innerNode];
|
[node addSubnode:innerNode];
|
||||||
|
|
||||||
// Convert point in outer node's coordinate space *TO* inner node's coordinate space
|
// Convert point in outer node's coordinate space *TO* inner node's coordinate space
|
||||||
@@ -875,7 +898,8 @@ for (ASDisplayNode *n in @[ nodes ]) {\
|
|||||||
innerNode.anchorPoint = CGPointMake(0.3, 0.3);
|
innerNode.anchorPoint = CGPointMake(0.3, 0.3);
|
||||||
innerNode.position = CGPointMake(23, 23);
|
innerNode.position = CGPointMake(23, 23);
|
||||||
innerNode.bounds = CGRectMake(17, 17, 200, 200);
|
innerNode.bounds = CGRectMake(17, 17, 200, 200);
|
||||||
originalPoint = CGPointMake(1, 1), correctPoint = CGPointMake(55, 55);
|
originalPoint = CGPointMake(1, 1);
|
||||||
|
correctPoint = CGPointMake(55, 55);
|
||||||
convertedPoint = [self checkConvertPoint:originalPoint toNode:innerNode selfNode:node];
|
convertedPoint = [self checkConvertPoint:originalPoint toNode:innerNode selfNode:node];
|
||||||
XCTAssertTrue(_CGPointEqualToPointWithEpsilon(convertedPoint, correctPoint, 0.001), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
XCTAssertTrue(_CGPointEqualToPointWithEpsilon(convertedPoint, correctPoint, 0.001), @"Unexpected point conversion result. Point: %@ Expected conversion: %@ Actual conversion: %@", NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(correctPoint), NSStringFromCGPoint(convertedPoint));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,9 +42,9 @@ static ASLayout *layout(id<ASLayoutElement> element, NSArray<ASLayout *> *sublay
|
|||||||
NSMutableArray<ASLayoutSpec *> *layoutSpecs = [NSMutableArray array];
|
NSMutableArray<ASLayoutSpec *> *layoutSpecs = [NSMutableArray array];
|
||||||
NSMutableArray<ASDisplayNode *> *indirectSubnodes = [NSMutableArray array];
|
NSMutableArray<ASDisplayNode *> *indirectSubnodes = [NSMutableArray array];
|
||||||
|
|
||||||
ASDisplayNode *(^subnode)() = ^ASDisplayNode *() { [subnodes addObject:[[ASDisplayNode alloc] init]]; return [subnodes lastObject]; };
|
ASDisplayNode *(^subnode)(void) = ^ASDisplayNode *() { [subnodes addObject:[[ASDisplayNode alloc] init]]; return [subnodes lastObject]; };
|
||||||
ASLayoutSpec *(^layoutSpec)() = ^ASLayoutSpec *() { [layoutSpecs addObject:[[ASLayoutSpec alloc] init]]; return [layoutSpecs lastObject]; };
|
ASLayoutSpec *(^layoutSpec)(void) = ^ASLayoutSpec *() { [layoutSpecs addObject:[[ASLayoutSpec alloc] init]]; return [layoutSpecs lastObject]; };
|
||||||
ASDisplayNode *(^indirectSubnode)() = ^ASDisplayNode *() { [indirectSubnodes addObject:[[ASDisplayNode alloc] init]]; return [indirectSubnodes lastObject]; };
|
ASDisplayNode *(^indirectSubnode)(void) = ^ASDisplayNode *() { [indirectSubnodes addObject:[[ASDisplayNode alloc] init]]; return [indirectSubnodes lastObject]; };
|
||||||
|
|
||||||
NSArray<ASLayout *> *sublayouts = @[
|
NSArray<ASLayout *> *sublayouts = @[
|
||||||
layout(subnode(), @[
|
layout(subnode(), @[
|
||||||
@@ -118,7 +118,7 @@ static ASLayout *layout(id<ASLayoutElement> element, NSArray<ASLayout *> *sublay
|
|||||||
@autoreleasepool {
|
@autoreleasepool {
|
||||||
ASDisplayNode *rootNode = [[ASDisplayNode alloc] init];
|
ASDisplayNode *rootNode = [[ASDisplayNode alloc] init];
|
||||||
NSMutableArray<ASDisplayNode *> *subnodes = [NSMutableArray array];
|
NSMutableArray<ASDisplayNode *> *subnodes = [NSMutableArray array];
|
||||||
ASDisplayNode *(^subnode)() = ^ASDisplayNode *() { [subnodes addObject:[[ASDisplayNode alloc] init]]; return [subnodes lastObject]; };
|
ASDisplayNode *(^subnode)(void) = ^ASDisplayNode *() { [subnodes addObject:[[ASDisplayNode alloc] init]]; return [subnodes lastObject]; };
|
||||||
ASLayout *originalLayout = layoutWithCustomPosition(ASPointNull,
|
ASLayout *originalLayout = layoutWithCustomPosition(ASPointNull,
|
||||||
rootNode,
|
rootNode,
|
||||||
@[
|
@[
|
||||||
@@ -148,9 +148,9 @@ static ASLayout *layout(id<ASLayoutElement> element, NSArray<ASLayout *> *sublay
|
|||||||
NSMutableArray<ASDisplayNode *> *indirectSubnodes = [NSMutableArray array];
|
NSMutableArray<ASDisplayNode *> *indirectSubnodes = [NSMutableArray array];
|
||||||
NSMutableArray<ASLayout *> *reusedLayouts = [NSMutableArray array];
|
NSMutableArray<ASLayout *> *reusedLayouts = [NSMutableArray array];
|
||||||
|
|
||||||
ASDisplayNode *(^subnode)() = ^ASDisplayNode *() { [subnodes addObject:[[ASDisplayNode alloc] init]]; return [subnodes lastObject]; };
|
ASDisplayNode *(^subnode)(void) = ^ASDisplayNode *() { [subnodes addObject:[[ASDisplayNode alloc] init]]; return [subnodes lastObject]; };
|
||||||
ASLayoutSpec *(^layoutSpec)() = ^ASLayoutSpec *() { [layoutSpecs addObject:[[ASLayoutSpec alloc] init]]; return [layoutSpecs lastObject]; };
|
ASLayoutSpec *(^layoutSpec)(void) = ^ASLayoutSpec *() { [layoutSpecs addObject:[[ASLayoutSpec alloc] init]]; return [layoutSpecs lastObject]; };
|
||||||
ASDisplayNode *(^indirectSubnode)() = ^ASDisplayNode *() { [indirectSubnodes addObject:[[ASDisplayNode alloc] init]]; return [indirectSubnodes lastObject]; };
|
ASDisplayNode *(^indirectSubnode)(void) = ^ASDisplayNode *() { [indirectSubnodes addObject:[[ASDisplayNode alloc] init]]; return [indirectSubnodes lastObject]; };
|
||||||
ASLayout *(^reusedLayout)(ASDisplayNode *) = ^ASLayout *(ASDisplayNode *subnode) { [reusedLayouts addObject:layout(subnode, @[])]; return [reusedLayouts lastObject]; };
|
ASLayout *(^reusedLayout)(ASDisplayNode *) = ^ASLayout *(ASDisplayNode *subnode) { [reusedLayouts addObject:layout(subnode, @[])]; return [reusedLayouts lastObject]; };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user