Using NSAttributedString we can change the colour of string etc. Is it possible to tilt a specific character in a string. E.g
answers will be appreciated.
I found a solution which is not unto the mark. If someone corrects the code that while be helpful
- (void)drawRect:(CGRect)rect {
CTFontRef sysUIFont = CTFontCreateUIFontForLanguage(kCTFontSystemFontType,
14.0, NULL);
// blue
CGColorRef color = [UIColor blueColor].CGColor;
// single underline
//NSNumber *underline = [NSNumber numberWithInt:kCTUnderlineStyleSingle];
NSDictionary *attributesDict = [NSDictionary dictionaryWithObjectsAndKeys:
(__bridge id)sysUIFont, (id)kCTFontAttributeName,
color, (id)kCTForegroundColorAttributeName, nil];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
for (int i =0 ; i < 4; i++)
{
NSString *letter =[@"TEXT" substringWithRange:NSMakeRange(i, 1)];
NSAttributedString *stringToDraw = [[NSAttributedString alloc] initWithString:letter attributes:attributesDict];
// CGSize letterSize =[letter sizeWithAttributes:@{NSFontAttributeName:self.font}];
// draw
CTLineRef line = CTLineCreateWithAttributedString(
(CFAttributedStringRef)stringToDraw);
if(i==3){
CGContextRotateCTM (context, radians(90));
//18 & 17 are hard coded values
CGContextSetTextPosition(context, (10.0 * i)- 18, 10.0 - (17*i));
}
else{
CGContextSetTextPosition(context, 10.0 * i, 10.0);
}
CTLineDraw(line, context);
// clean up
CFRelease(line);
stringToDraw = nil;
}
CFRelease(sysUIFont);
//stringToDraw = nil;
}
OutPut :
The NSAffineTransform class provides methods for creating, concatenating, and applying affine transformations.
rotateByDegrees
:
Applies a rotation factor (measured in degrees) to the receiver’s transformation matrix.
rotateByRadians
:
Applies a rotation factor (measured in radians) to the receiver’s transformation matrix.
Example:
- (void)drawRect:(NSRect)rect
{
NSAttributedString * myString = [[NSAttributedString alloc] initWithPath:mypath documentAttributes:NULL];
NSAffineTransform* xform = [NSAffineTransform transform];
[myString drawAtPoint:NSMakePoint(10,10)];
[xform rotateByDegrees:-90.0];
[xform concat];
[myString drawAtPoint:NSMakePoint(-150,0)];
[xform invert];
[xform concat];
[myString drawAtPoint:NSMakePoint(15,15)];
[myString release];
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With