From 729766a36500e163b2cc59a886d5b464045aeb08 Mon Sep 17 00:00:00 2001 From: Michael Schneider Date: Fri, 15 Jul 2016 08:01:24 -0700 Subject: [PATCH] Add convenience functions to create relative sizes with percentage --- AsyncDisplayKit/ASDisplayNode.mm | 2 +- AsyncDisplayKit/Layout/ASDimension.h | 13 +++++-------- AsyncDisplayKit/Layout/ASDimension.mm | 5 ++--- AsyncDisplayKit/Layout/ASRelativeSize.h | 18 +++++++++--------- AsyncDisplayKit/Layout/ASRelativeSize.mm | 17 +++++++++++++---- 5 files changed, 30 insertions(+), 25 deletions(-) diff --git a/AsyncDisplayKit/ASDisplayNode.mm b/AsyncDisplayKit/ASDisplayNode.mm index 98038f5894..7b1a3a5bfd 100644 --- a/AsyncDisplayKit/ASDisplayNode.mm +++ b/AsyncDisplayKit/ASDisplayNode.mm @@ -2076,7 +2076,7 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock) ASDN::MutexLocker l(_propertyLock); if (! CGSizeEqualToSize(_preferredFrameSize, preferredFrameSize)) { _preferredFrameSize = preferredFrameSize; - self.sizeRange = ASRelativeSizeRangeMake(ASRelativeSizeMakeWithCGSize(_preferredFrameSize), ASRelativeSizeMakeWithCGSize(_preferredFrameSize)); + self.sizeRange = ASRelativeSizeRangeMakeWithExactCGSize(_preferredFrameSize); [self invalidateCalculatedLayout]; } } diff --git a/AsyncDisplayKit/Layout/ASDimension.h b/AsyncDisplayKit/Layout/ASDimension.h index e0a043c632..822a1c1963 100644 --- a/AsyncDisplayKit/Layout/ASDimension.h +++ b/AsyncDisplayKit/Layout/ASDimension.h @@ -12,9 +12,7 @@ #import #import -/** - A dimension relative to constraints to be provided in the future. - */ +/** A dimension relative to constraints to be provided in the future. */ typedef NS_ENUM(NSInteger, ASRelativeDimensionType) { /** Just a number. It will always resolve to exactly this amount. This is the default type. */ ASRelativeDimensionTypePoints, @@ -40,7 +38,7 @@ extern ASRelativeDimension const ASRelativeDimensionUnconstrained; ASDISPLAYNODE_EXTERN_C_BEGIN NS_ASSUME_NONNULL_BEGIN -#pragma mark ASRelativeDimension +#pragma mark - ASRelativeDimension extern ASRelativeDimension ASRelativeDimensionMake(ASRelativeDimensionType type, CGFloat value); @@ -56,8 +54,7 @@ extern NSString *NSStringFromASRelativeDimension(ASRelativeDimension dimension); extern CGFloat ASRelativeDimensionResolve(ASRelativeDimension dimension, CGFloat parent); -#pragma mark - -#pragma mark ASSizeRange +#pragma mark - ASSizeRange extern ASSizeRange ASSizeRangeMake(CGSize min, CGSize max); @@ -68,8 +65,8 @@ extern ASSizeRange ASSizeRangeMakeExactSize(CGSize size); extern CGSize ASSizeRangeClamp(ASSizeRange sizeRange, CGSize size); /** - Intersects another size range. If the other size range does not overlap in either dimension, this size range - "wins" by returning a single point within its own range that is closest to the non-overlapping range. + * Intersects another size range. If the other size range does not overlap in either dimension, this size range + * "wins" by returning a single point within its own range that is closest to the non-overlapping range. */ extern ASSizeRange ASSizeRangeIntersect(ASSizeRange sizeRange, ASSizeRange otherSizeRange); diff --git a/AsyncDisplayKit/Layout/ASDimension.mm b/AsyncDisplayKit/Layout/ASDimension.mm index b07e223f87..53b03b7670 100644 --- a/AsyncDisplayKit/Layout/ASDimension.mm +++ b/AsyncDisplayKit/Layout/ASDimension.mm @@ -13,7 +13,7 @@ ASRelativeDimension const ASRelativeDimensionUnconstrained = {}; -#pragma mark ASRelativeDimension +#pragma mark - ASRelativeDimension ASRelativeDimension ASRelativeDimensionMake(ASRelativeDimensionType type, CGFloat value) { @@ -61,8 +61,7 @@ CGFloat ASRelativeDimensionResolve(ASRelativeDimension dimension, CGFloat parent } } -#pragma mark - -#pragma mark ASSizeRange +#pragma mark - ASSizeRange ASSizeRange ASSizeRangeMake(CGSize min, CGSize max) { diff --git a/AsyncDisplayKit/Layout/ASRelativeSize.h b/AsyncDisplayKit/Layout/ASRelativeSize.h index 479b865c43..12f4845531 100644 --- a/AsyncDisplayKit/Layout/ASRelativeSize.h +++ b/AsyncDisplayKit/Layout/ASRelativeSize.h @@ -35,14 +35,16 @@ extern ASRelativeSizeRange const ASRelativeSizeRangeUnconstrained; ASDISPLAYNODE_EXTERN_C_BEGIN NS_ASSUME_NONNULL_BEGIN -#pragma mark - -#pragma mark ASRelativeSize +#pragma mark - ASRelativeSize extern ASRelativeSize ASRelativeSizeMake(ASRelativeDimension width, ASRelativeDimension height); /** Convenience constructor to provide size in Points. */ extern ASRelativeSize ASRelativeSizeMakeWithCGSize(CGSize size); +/** Convenience constructor to provide size in Percentage. */ +extern ASRelativeSize ASRelativeSizeMakeWithPercent(CGFloat percent); + /** Resolve this relative size relative to a parent size. */ extern CGSize ASRelativeSizeResolveSize(ASRelativeSize relativeSize, CGSize parentSize); @@ -50,8 +52,7 @@ extern BOOL ASRelativeSizeEqualToRelativeSize(ASRelativeSize lhs, ASRelativeSize extern NSString *NSStringFromASRelativeSize(ASRelativeSize size); -#pragma mark - -#pragma mark ASRelativeSizeRange +#pragma mark - ASRelativeSizeRange extern ASRelativeSizeRange ASRelativeSizeRangeMake(ASRelativeSize min, ASRelativeSize max); @@ -60,16 +61,15 @@ extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeSize(ASRelati extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactCGSize(CGSize exact); +extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactPercent(CGFloat percent); + extern ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeDimensions(ASRelativeDimension exactWidth, ASRelativeDimension exactHeight); extern BOOL ASRelativeSizeRangeEqualToRelativeSizeRange(ASRelativeSizeRange lhs, ASRelativeSizeRange rhs); -/** - Provided a parent size, compute final dimensions for this RelativeSizeRange to arrive at a SizeRange. - */ -extern ASSizeRange ASRelativeSizeRangeResolve(ASRelativeSizeRange relativeSizeRange, - CGSize parentSize); +/** Provided a parent size, compute final dimensions for this RelativeSizeRange to arrive at a SizeRange. */ +extern ASSizeRange ASRelativeSizeRangeResolve(ASRelativeSizeRange relativeSizeRange, CGSize parentSize); NS_ASSUME_NONNULL_END ASDISPLAYNODE_EXTERN_C_END diff --git a/AsyncDisplayKit/Layout/ASRelativeSize.mm b/AsyncDisplayKit/Layout/ASRelativeSize.mm index 9018aedf40..575c1f197e 100644 --- a/AsyncDisplayKit/Layout/ASRelativeSize.mm +++ b/AsyncDisplayKit/Layout/ASRelativeSize.mm @@ -12,8 +12,7 @@ ASRelativeSizeRange const ASRelativeSizeRangeUnconstrained = {}; -#pragma mark - -#pragma mark ASRelativeSize +#pragma mark - ASRelativeSize ASRelativeSize ASRelativeSizeMake(ASRelativeDimension width, ASRelativeDimension height) { @@ -26,6 +25,12 @@ ASRelativeSize ASRelativeSizeMakeWithCGSize(CGSize size) ASRelativeDimensionMakeWithPoints(size.height)); } +ASRelativeSize ASRelativeSizeMakeWithPercent(CGFloat percent) +{ + return ASRelativeSizeMake(ASRelativeDimensionMakeWithPercent(percent), + ASRelativeDimensionMakeWithPercent(percent)); +} + CGSize ASRelativeSizeResolveSize(ASRelativeSize relativeSize, CGSize parentSize) { return CGSizeMake(ASRelativeDimensionResolve(relativeSize.width, parentSize.width), @@ -45,8 +50,7 @@ NSString *NSStringFromASRelativeSize(ASRelativeSize size) NSStringFromASRelativeDimension(size.height)]; } -#pragma mark - -#pragma mark ASRelativeSizeRange +#pragma mark - ASRelativeSizeRange ASRelativeSizeRange ASRelativeSizeRangeMake(ASRelativeSize min, ASRelativeSize max) { @@ -63,6 +67,11 @@ ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactCGSize(CGSize exact) return ASRelativeSizeRangeMakeWithExactRelativeSize(ASRelativeSizeMakeWithCGSize(exact)); } +ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactPercent(CGFloat percent) +{ + return ASRelativeSizeRangeMakeWithExactRelativeSize(ASRelativeSizeMakeWithPercent(percent)); +} + ASRelativeSizeRange ASRelativeSizeRangeMakeWithExactRelativeDimensions(ASRelativeDimension exactWidth, ASRelativeDimension exactHeight) {