• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSTextContainer exclusionPaths not working on iOS without UITextView
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSTextContainer exclusionPaths not working on iOS without UITextView


  • Subject: Re: NSTextContainer exclusionPaths not working on iOS without UITextView
  • From: Aki Inoue <email@hidden>
  • Date: Thu, 21 Sep 2017 11:13:43 -0700

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 <email@hidden> 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 (email@hidden)
>
> 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:
>
> This email sent to email@hidden

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

References: 
 >NSTextContainer exclusionPaths not working on iOS without UITextView (From: Steve Mills <email@hidden>)

  • Prev by Date: NSTextContainer exclusionPaths not working on iOS without UITextView
  • Next by Date: How Finder handles dragging of an email file from Outlook for Mac?
  • Previous by thread: NSTextContainer exclusionPaths not working on iOS without UITextView
  • Next by thread: How Finder handles dragging of an email file from Outlook for Mac?
  • Index(es):
    • Date
    • Thread