• 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
CTFramesetterSuggestFrameSizeWithConstraints cuts off text
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CTFramesetterSuggestFrameSizeWithConstraints cuts off text


  • Subject: CTFramesetterSuggestFrameSizeWithConstraints cuts off text
  • From: Koen van der Drift <email@hidden>
  • Date: Fri, 17 May 2013 09:38:25 -0400

I'm using Core Text to layout text in an UIView but am having troubles with getting the correct size that the text needs, so I can set the contentSize of the UIScrollView that it is embedded in.  I know it is the wrong size, because the last line is not showing.

I've done some spitting around, and it seems that CTFramesetterSuggestFrameSizeWithConstraints may not always work properly.   However I haven't found a solution that works for me.


I've pasted my code below, maybe I am overlooking something?


Thanks,

- Koen.

==============================




// create the string:

    NSString *testString = @"This is a not so very long but at least long enough test string to cover more than one line.";

    CFMutableAttributedStringRef attrString = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0);
    CFAttributedStringReplaceString (attrString, CFRangeMake(0, 0), (CFStringRef) testString );
    CFIndex stringLength = CFStringGetLength((CFStringRef) attrString);

// give it a font

    UIFont* uiFont = [UIFont fontWithName: @"Courier" size: 22.0];
    CTFontRef ctFont = CTFontCreateWithName((__bridge CFStringRef) uiFont.fontName, uiFont.pointSize, NULL);
    CFAttributedStringSetAttribute(attrString, CFRangeMake(0, stringLength), kCTFontAttributeName, ctFont);

// calculate the size it occupies

    CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString);
    CFRange fitRange;
    CGSize frameSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, stringLength), NULL, CGSizeMake(self.bounds.size.width, CGFLOAT_MAX), &fitRange);
    self.frame = CGRectMake(0, 0, self.frame.size.width, frameSize.height);   // <<<<====   frameSize.height is too small


// draw the string:

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetTextMatrix(context, CGAffineTransformIdentity);
    CGContextTranslateCTM(context, 0, self.bounds.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);

    CGMutablePathRef path = CGPathCreateMutable();
    CGPathAddRect(path, NULL, self.frame);

    CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef) attrString);
    CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, stringLength), path, NULL);

    CTFrameDraw(frameRef, context);
_______________________________________________

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

  • Follow-Ups:
    • Re: CTFramesetterSuggestFrameSizeWithConstraints cuts off text
      • From: Graham Cox <email@hidden>
    • Re: CTFramesetterSuggestFrameSizeWithConstraints cuts off text
      • From: Quincey Morris <email@hidden>
    • Re: CTFramesetterSuggestFrameSizeWithConstraints cuts off text
      • From: Fritz Anderson <email@hidden>
    • Re: CTFramesetterSuggestFrameSizeWithConstraints cuts off text
      • From: Fritz Anderson <email@hidden>
  • Prev by Date: Re: NSMutableDictionary or Custom Object when adding properties?
  • Next by Date: Re: CTFramesetterSuggestFrameSizeWithConstraints cuts off text
  • Previous by thread: Re: NSMutableDictionary or Custom Object when adding properties?
  • Next by thread: Re: CTFramesetterSuggestFrameSizeWithConstraints cuts off text
  • Index(es):
    • Date
    • Thread