Advance text rendering in i os

1,549 views
1,391 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,549
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
7
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Advance text rendering in i os

  1. 1. Boutique product development companyIt is amazing what you can accomplish when you have a client-centric team to deliver outstanding products.
  2. 2. Advance Text Rendering In iOS Sohail Mohabbat Ali| iOS Mentor
  3. 3. Advance Text Rendering In iOSTopics covered in the presentation • Back Ground • Core Text • How to Do It? • How to Fix IT or Sohail Mohabbat Ali | iOS Mentor
  4. 4. Advance text Rendering in iOSText Rendering in iOS • UIKit • Core Graphics/Quartz • Core Text Sohail Mohabbat Ali | iOS Mentor
  5. 5. Advance text Rendering in iOSText Rendering in iOS Cont.. UIKit: In UIKit you have and you add a word or a text line on the screen by simple Drag-and-Drop in IB, but you cannot do many things like strikethrough and custom formatting. Sohail Mohabbat Ali | iOS Mentor
  6. 6. Advance text Rendering in iOSText Rendering in iOS Cont.. Core Graphics/Quartz: In you can do pretty much everything the system is capable of, but you need to calculate the position of each glyph in your text and draw it on the screen. Sohail Mohabbat Ali | iOS Mentor
  7. 7. Advance text Rendering in iOSText Rendering in iOS Cont.. Core Text: lies right between the two! You have complete control over position, layout, attributes like color and size, but Core Text takes care of everything else for you – from word wrap to font rendering and more. Sohail Mohabbat Ali | iOS Mentor
  8. 8. Advance text Rendering in iOSBack Ground A tale of two Apples • The original Apple development team created “Classic” APIs and • The NeXT team created NS* APIs which we later called “ ” • Since the merge of the two company, solutions like and were created to close the gap • For modern, Unicode-aware text layout, there is which is still a popular choice for now Sohail Mohabbat Ali | iOS Mentor
  9. 9. Advance text Rendering in iOSBackground More about ATSUI • Short for “ ” Like API (OSErr, Fixed, Pascal String, etc.) • Fast, robust, powerful, but the API is bit complicate to use (for font enumeration and selection) still exists, but ATSUI is now , no 64-bit support Sohail Mohabbat Ali | iOS Mentor
  10. 10. Advance text Rendering in iOSWhy Core Text ? • Simpler, Core Foundation style API, much easier to call from Cocoa apps • Minimize between different data formats, improve performance (up to 2 times faster according to Apple) • Supported behavior (like font traits) closely matches with Cocoa Text System Sohail Mohabbat Ali | iOS Mentor
  11. 11. Advance text Rendering in iOSWhat is easy with Core Text • Lay formatted text down on the screen • Fine tune the text’s appearance • Add images inside the text content • Display data in columns • Display text with different transformations Sohail Mohabbat Ali | iOS Mentor
  12. 12. Advance text Rendering in iOSHow to do it ? Step 1: Prepare Attributed String • First, you prepare a with all the parameters set (to the whole string or part of the string): NSAttributedString * str = [[NSAttributedString alloc] initWithString:@”Hello core text world!” attributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"Helvetive" size:12.0], (NSString *) kCTFontAttributeName]]; CFAttributedStringRef attrString = (CFAttributedStringRef) str; Sohail Mohabbat Ali | iOS Mentor
  13. 13. Advance text Rendering in iOSWhat is easy with Core Text Step 2: Create a CTFramesetter • Now you can create a central object for Core Text typesetting: , you will use it through the entire layout process: CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString); Sohail Mohabbat Ali | iOS Mentor
  14. 14. Advance text Rendering in iOSWhat is easy with Core Text Step 3: Create a CGPath • Third, you add one or more (or other shapes) to form a complete : CGMutablePathRef path = CGPathCreateMutable(); CGRect bounds = self.bounds; CGPathAddRect(path, NULL, bounds); Sohail Mohabbat Ali | iOS Mentor
  15. 15. Advance text Rendering in iOSWhat is easy with Core Text Step 4: Get the Frame Use the and to create (s), then draw it in current context CGContextRef context = UIGraphicsGetCurrentContext(); CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL); CTFrameDraw(frame , context); Sohail Mohabbat Ali | iOS Mentor
  16. 16. Advance text Rendering in iOSWhat is easy with Core Text Step 5: Don’t forget to release them Release everything you created with CGRelease. CFRelease(attrString); CFRelease(framesetter); CFRelease(frame); CFRelease(path); Sohail Mohabbat Ali | iOS Mentor
  17. 17. Advance text Rendering in iOSWhat is easy with Core Text Step 5: Don’t forget to release them Release everything you created with CGRelease. CFRelease(attrString); CFRelease(framesetter); CFRelease(frame); CFRelease(path); Sohail Mohabbat Ali | iOS Mentor
  18. 18. Advance text Rendering in iOSHow to it ? CGContextSetTextMatrix(context, CGAffineTransformIdentity); CGContextTranslateCTM(context, 0, self.bounds.size.height); CGContextScaleCTM(context, 1.0, -1.0); Sohail Mohabbat Ali | iOS Mentor
  19. 19. Advance text Rendering in iOSWriting on Shapes CGMutablePathRef path = CGPathCreateMutable(); CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attString); CTFrameRef theFrame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, [attString length]), path, NULL); CFRelease(framesetter); CFRelease(path); CTFrameDraw(theFrame, context); CFRelease(theFrame); Sohail Mohabbat Ali | iOS Mentor
  20. 20. Advance text Rendering in iOSWriting on Shapes (Output) Sohail Mohabbat Ali | iOS Mentor
  21. 21. Advance text Rendering in iOSWriting on Shapes (Output) Sohail Mohabbat Ali | iOS Mentor
  22. 22. Advance text Rendering in iOSPlaying with NSA Tributed String With the help of function we can format different chunks of strings with different attributes Sohail Mohabbat Ali | iOS Mentor

×