This method is deprecated in iOS 7.0:
drawAtPoint:forWidth:withFont:fontSize:lineBreakMode:baselineAdjustment:
Now use drawInRect:withAttributes:
instead.
I can't find the attributeName of fontSize and baselineAdjustment.
Edit
Thanks @Puneet answer.
Actually, I mean if there doesn't have these key, how to implement this method in iOS 7?
Like below method:
+ (CGSize)drawWithString:(NSString *)string atPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font fontSize:(CGFloat)fontSize lineBreakMode:(IBLLineBreakMode)lineBreakMode baselineAdjustment:(UIBaselineAdjustment)baselineAdjustment { if (iOS7) { CGRect rect = CGRectMake(point.x, point.y, width, CGFLOAT_MAX); NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = lineBreakMode; NSDictionary *attributes = @{NSFontAttributeName: font, NSParagraphStyleAttributeName: paragraphStyle}; [string drawInRect:rect withAttributes:attributes]; size = CGSizeZero; } else { size = [string drawAtPoint:point forWidth:width withFont:font fontSize:fontSize lineBreakMode:lineBreakMode baselineAdjustment:baselineAdjustment]; } return size; }
I don't know how to pass fontSize
and baselineAdjustment
to
attributes
dictionary.
e.g.
NSBaselineOffsetAttributeName
key should pass a NSNumer
to it, but the baselineAdjustment
is Enum
.
Isn't there have other way to pass the two variables?
You can use NSDictionary
and apply attributes like this:
NSFont *font = [NSFont fontWithName:@"Palatino-Roman" size:14.0]; NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys: font, NSFontAttributeName, [NSNumber numberWithFloat:1.0], NSBaselineOffsetAttributeName, nil];
Use attrsDictionary
as argument.
Refer: Attributed String Programming Guide
Refer: Standard Attributes
SWIFT: IN String drawInRect is not available but we can use NSString instead:
let font = UIFont(name: "Palatino-Roman", size: 14.0) let baselineAdjust = 1.0 let attrsDictionary = [NSFontAttributeName:font, NSBaselineOffsetAttributeName:baselineAdjust] as [NSObject : AnyObject] let str:NSString = "Hello World" str.drawInRect(CGRectZero, withAttributes: attrsDictionary)
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