Merge pull request #590 from rcancro/master

Add expectedSize to ASNetworkImageNode
This commit is contained in:
appleguy
2015-08-12 15:51:57 -07:00
4 changed files with 30 additions and 6 deletions

View File

@@ -185,6 +185,16 @@ typedef CALayer *(^ASDisplayNodeLayerBlock)();
*/
@property (nonatomic, readonly, assign) ASSizeRange constrainedSizeForCalculatedLayout;
/**
* @abstract Provides a default intrinsic content size for calculateSizeThatFits:. This is useful when laying out
* a node that either has no intrinsic content size or should be laid out at a different size than its intrinsic content
* size. For example, this property could be set on an ASImageNode to display at a size different from the underlying
* image size.
*
* @return The preferred frame size of this node
*/
@property (atomic, assign, readwrite) CGSize preferredFrameSize;
/** @name Managing the nodes hierarchy */

View File

@@ -47,6 +47,7 @@
@synthesize flexShrink = _flexShrink;
@synthesize flexBasis = _flexBasis;
@synthesize alignSelf = _alignSelf;
@synthesize preferredFrameSize = _preferredFrameSize;
BOOL ASDisplayNodeSubclassOverridesSelector(Class subclass, SEL selector)
{
@@ -155,6 +156,7 @@ void ASDisplayNodeRespectThreadAffinityOfNode(ASDisplayNode *node, void (^block)
_methodOverrides = overrides;
_flexBasis = ASRelativeDimensionUnconstrained;
_preferredFrameSize = CGSizeZero;
}
- (id)init
@@ -1350,7 +1352,7 @@ static NSInteger incrementIfFound(NSInteger i) {
- (CGSize)calculateSizeThatFits:(CGSize)constrainedSize
{
ASDisplayNodeAssertThreadAffinity(self);
return CGSizeZero;
return _preferredFrameSize;
}
- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constrainedSize
@@ -1377,6 +1379,17 @@ static NSInteger incrementIfFound(NSInteger i) {
return _constrainedSize;
}
- (void)setPreferredFrameSize:(CGSize)preferredFrameSize
{
ASDN::MutexLocker l(_propertyLock);
_preferredFrameSize = preferredFrameSize;
}
- (CGSize)preferredFrameSize
{
ASDN::MutexLocker l(_propertyLock);
return _preferredFrameSize;
}
- (UIImage *)placeholderImage
{
return nil;

View File

@@ -111,7 +111,10 @@
- (CGSize)calculateSizeThatFits:(CGSize)constrainedSize
{
ASDN::MutexLocker l(_imageLock);
if (_image)
// if a preferredFrameSize is set, call the superclass to return that instead of using the image size.
if (CGSizeEqualToSize(self.preferredFrameSize, CGSizeZero) == NO)
return [super calculateSizeThatFits:constrainedSize];
else if (_image)
return _image.size;
else
return CGSizeZero;