Steve, You should be rendering using NSLayoutManager instead of -drawInRect:. The method is handling NSTextStorage just as a mere NSAttributedString ignoring the rest of objects connected.
Check out the documentation for -[NSLayoutManager drawGlyphsInGlyphRange:atPoint:]. Aki > On Sep 21, 2017, at 6:04 AM, Steve Mills <sjmi...@mac.com> wrote: > > Didn't work the first time I sent this, because something messed up and > thought the message was too large, when it's less than 2000 characters. > > No bites on apple-dev.groups.io, so I'll try here. > > I'm trying to use exclusionPaths for the first time and am not having any > success. For now, I'm just creating the stuff on the fly in my > drawLayer:inContext: method:. The string draws, but doesn't exclude any path > no matter what I set it to. I'm also not that familiar with the whole > NSTextStorage/NSLayoutManager/NSTextContainer family, other than using > snippets of code in the past, so it could be I'm doing something dumb. Any > ideas? > > BTW, if I instead install a UITextView and set its exclusionPaths, it works. > So does NSTextStorage not know enough to draw with the exclusionPaths, and I > just need to install text views for each one instead? > > -(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx > { > if([layer.name isEqualToString:@"balloons"]) { > UIGraphicsPushContext(ctx); > > CGRect box = CGRectMake(0, 0, 400, 400); > NSTextStorage* storage = [[NSTextStorage alloc] > initWithString:@"I like little pigs who run and scurry away from the butcher, > because the butcher is carrying a large cleaver and wants to chop them up > into delicious sandwiches!" attributes:@{NSFontAttributeName:[UIFont > systemFontOfSize:36]}]; > UIBezierPath* bez = [UIBezierPath > bezierPathWithRect:CGRectMake(100, 100, 100, 100)]; > NSLayoutManager* lman = [NSLayoutManager new]; > > [storage addLayoutManager:lman]; > > NSTextContainer* cont = [[NSTextContainer alloc] > initWithSize:box.size]; > > cont.exclusionPaths = @[bez]; > [lman addTextContainer:cont]; > > // Trying different things to see if they make it work - nope. > [lman textContainerChangedGeometry:cont]; > [lman invalidateLayoutForCharacterRange:NSMakeRange(0, > storage.length) actualCharacterRange:nil]; > > [storage drawInRect:box]; > > UIGraphicsPopContext(); > } > } > > -- > Steve Mills > Drummer, Mac geek > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/cocoa-dev/aki%40apple.com > > This email sent to a...@apple.com _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com