CATextLayer and tracking / character spacing

I use CATextLayer to use a custom font in iOS, I know that there is an easy way to use a custom font with Fonts provided by application , but this is a different font. I was wondering if there is a way to change the interval between each character? I did not find any property to do this!

EDITED:

 - (void)viewWillAppear:(BOOL)animated { CTFontRef font = [self newCustomFontWithName:@"yeki" ofType:@"ttf" attributes:[NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:16.f] forKey:(NSString *)kCTFontSizeAttribute]]; CGRect screenBounds = [[UIScreen mainScreen] bounds]; normalTextLayer_ = [[CATextLayer alloc] init]; normalTextLayer_.font = font; normalTextLayer_.string = str; normalTextLayer_.wrapped = YES; normalTextLayer_.foregroundColor = [[UIColor purpleColor] CGColor]; normalTextLayer_.fontSize = 50.f; normalTextLayer_.alignmentMode = kCAAlignmentRight; normalTextLayer_.frame = CGRectMake(0.f,100.f, screenBounds.size.width, screenBounds.size.height /1.f); [self.view.layer addSublayer:normalTextLayer_]; CFRelease(font); } 
+8
ios iphone core-animation catextlayer
source share
1 answer

You can assign an NSAttributedString (or NSMutableAttributedString ) instead of a simple NSString for a layer and use the kCTKernAttributeName attribute (see Link to Attributes of a kCTKernAttributeName Text String ) to configure kerning.

Example:

 CTFontRef font = CTFontCreateWithName(CFSTR("Helvetica"), 30, NULL); NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys: (id)font, kCTFontAttributeName, [NSNumber numberWithFloat:15.0], kCTKernAttributeName, (id)[[UIColor greenColor] CGColor], kCTForegroundColorAttributeName, nil]; NSAttributedString *attributedString = [[[NSAttributedString alloc] initWithString:@"Hello World" attributes:attributes] autorelease]; CFRelease(font); myTextLayer.string = attributedString; 

This will give you green text in Helvetica 30 with extended character spacing.

+12
source share

All Articles