Merge pull request #1928 from maicki/MSAddRelativeSizePercentage

[ASLayout] Add convenience functions to create relative sizes with percentage
This commit is contained in:
Michael Schneider
2016-07-15 11:35:48 -07:00
committed by GitHub
5 changed files with 30 additions and 25 deletions

View File

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

View File

@@ -12,9 +12,7 @@
#import <UIKit/UIKit.h>
#import <AsyncDisplayKit/ASBaseDefines.h>
/**
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);

View File

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

View File

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

View File

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