ASTextNode expose exclusion paths

expose NSTextContainer's exclusionPaths property on ASTextNode to be able to exclude view areas from typesetting.

This implements #394
This commit is contained in:
Tobias Klonk
2015-04-20 10:21:01 +02:00
parent 1316389f10
commit 2a29f81b3a
6 changed files with 81 additions and 0 deletions

View File

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