mirror of
https://github.com/HackPlan/AsyncDisplayKit.git
synced 2026-05-21 14:29:13 +08:00
Merge pull request #432 from tonklon/master
ASTextNode expose exclusion paths
This commit is contained in:
@@ -76,6 +76,8 @@ typedef NS_ENUM(NSUInteger, ASTextNodeHighlightStyle) {
|
||||
*/
|
||||
@property (nonatomic, readonly, assign) NSUInteger lineCount;
|
||||
|
||||
@property (nonatomic, strong) NSArray *exclusionPaths;
|
||||
|
||||
#pragma mark - Placeholders
|
||||
|
||||
/**
|
||||
|
||||
@@ -87,6 +87,8 @@ ASDISPLAYNODE_INLINE CGFloat ceilPixelValue(CGFloat f)
|
||||
CGFloat _shadowOpacity;
|
||||
CGFloat _shadowRadius;
|
||||
|
||||
NSArray *_exclusionPaths;
|
||||
|
||||
NSAttributedString *_composedTruncationString;
|
||||
|
||||
NSString *_highlightedLinkAttributeName;
|
||||
@@ -281,6 +283,7 @@ ASDISPLAYNODE_INLINE CGFloat ceilPixelValue(CGFloat f)
|
||||
truncationString:_composedTruncationString
|
||||
truncationMode:_truncationMode
|
||||
maximumLineCount:_maximumLineCount
|
||||
exclusionPaths:_exclusionPaths
|
||||
constrainedSize:constrainedSize];
|
||||
}
|
||||
return _renderer;
|
||||
@@ -349,6 +352,23 @@ ASDISPLAYNODE_INLINE CGFloat ceilPixelValue(CGFloat f)
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Text Layout
|
||||
|
||||
- (void)setExclusionPaths:(NSArray *)exclusionPaths
|
||||
{
|
||||
if ((_exclusionPaths == nil && exclusionPaths != nil) || (![_exclusionPaths isEqualToArray:exclusionPaths])) {
|
||||
_exclusionPaths = exclusionPaths;
|
||||
[self _invalidateRenderer];
|
||||
[self invalidateCalculatedSize];
|
||||
[self setNeedsDisplay];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSArray *)exclusionPaths
|
||||
{
|
||||
return _exclusionPaths;
|
||||
}
|
||||
|
||||
#pragma mark - Drawing
|
||||
|
||||
+ (void)drawRect:(CGRect)bounds withParameters:(ASTextNodeDrawParameters *)parameters isCancelled:(asdisplaynode_iscancelled_block_t)isCancelledBlock isRasterizing:(BOOL)isRasterizing
|
||||
|
||||
@@ -45,6 +45,12 @@ typedef NS_ENUM(NSUInteger, ASTextNodeRendererMeasureOption) {
|
||||
*/
|
||||
@interface ASTextNodeRenderer : NSObject
|
||||
|
||||
- (instancetype)initWithAttributedString:(NSAttributedString *)attributedString
|
||||
truncationString:(NSAttributedString *)truncationString
|
||||
truncationMode:(NSLineBreakMode)truncationMode
|
||||
maximumLineCount:(NSUInteger)maximumLineCount
|
||||
exclusionPaths:(NSArray *)exclusionPaths
|
||||
constrainedSize:(CGSize)constrainedSize;
|
||||
/*
|
||||
* Designated Initializer
|
||||
*
|
||||
|
||||
@@ -39,6 +39,8 @@ static const CGFloat ASTextNodeRendererTextCapHeightPadding = 1.3;
|
||||
NSLayoutManager *_layoutManager;
|
||||
NSTextStorage *_textStorage;
|
||||
NSTextContainer *_textContainer;
|
||||
|
||||
NSArray *_exclusionPaths;
|
||||
}
|
||||
|
||||
#pragma mark - Initialization
|
||||
@@ -47,6 +49,7 @@ static const CGFloat ASTextNodeRendererTextCapHeightPadding = 1.3;
|
||||
truncationString:(NSAttributedString *)truncationString
|
||||
truncationMode:(NSLineBreakMode)truncationMode
|
||||
maximumLineCount:(NSUInteger)maximumLineCount
|
||||
exclusionPaths:(NSArray *)exclusionPaths
|
||||
constrainedSize:(CGSize)constrainedSize
|
||||
{
|
||||
if (self = [super init]) {
|
||||
@@ -57,11 +60,22 @@ static const CGFloat ASTextNodeRendererTextCapHeightPadding = 1.3;
|
||||
|
||||
_maximumLineCount = maximumLineCount;
|
||||
|
||||
_exclusionPaths = exclusionPaths;
|
||||
|
||||
_constrainedSize = constrainedSize;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithAttributedString:(NSAttributedString *)attributedString
|
||||
truncationString:(NSAttributedString *)truncationString
|
||||
truncationMode:(NSLineBreakMode)truncationMode
|
||||
maximumLineCount:(NSUInteger)maximumLineCount
|
||||
constrainedSize:(CGSize)constrainedSize
|
||||
{
|
||||
return [self initWithAttributedString:attributedString truncationString:truncationString truncationMode:truncationMode maximumLineCount:maximumLineCount exclusionPaths:nil constrainedSize:constrainedSize];
|
||||
}
|
||||
|
||||
/*
|
||||
* Use this method to lazily construct the TextKit components.
|
||||
*/
|
||||
@@ -97,6 +111,8 @@ static const CGFloat ASTextNodeRendererTextCapHeightPadding = 1.3;
|
||||
// Set maximum number of lines
|
||||
_textContainer.maximumNumberOfLines = _maximumLineCount;
|
||||
|
||||
_textContainer.exclusionPaths = _exclusionPaths;
|
||||
|
||||
[_layoutManager addTextContainer:_textContainer];
|
||||
|
||||
ASDN::StaticMutexUnlocker gu(mutex);
|
||||
|
||||
Reference in New Issue
Block a user