Iphone 使用哪种方法显示文本?为什么?
当使用CoreGraphics绘制字符串/标签时,我们有两种方法Iphone 使用哪种方法显示文本?为什么?,iphone,ios,objective-c,ipad,core-graphics,Iphone,Ios,Objective C,Ipad,Core Graphics,当使用CoreGraphics绘制字符串/标签时,我们有两种方法 - (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode alignment:(NSTextAlignment)alignment; 例如: 及 乙二醇 哪一个是好方法?为什么?最好的方法是实现目标最简单的方法。API级别越高,使用效果越好。如果您可以使用NSString方法,那么您
- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode alignment:(NSTextAlignment)alignment;
例如:
及
乙二醇
哪一个是好方法?为什么?最好的方法是实现目标最简单的方法。API级别越高,使用效果越好。如果您可以使用
NSString
方法,那么您应该-除非您可以使用UILabel
(或类似方法)为您完成此项工作。始终尝试编写尽可能少的代码,并重用为您提供的代码,如果您的需求或性能分析显示需要,请放弃使用较低级别的API。其中只有一种是方法,而且有很多种方法不止两种。NSString方法相对于CGContext函数的一个优势应该是显而易见的,即使用后者时,必须尝试在MacRoman中对字符串进行编码,这可能会失败。NSString方法、其对应的NSAttributedString和核心文本都支持Unicode。
[value drawInRect:CGRectMake(xValue, rect.origin.y, objLegends.value *singleUnitWidth,heightOfBar)
withFont:[UIFont systemFontOfSize:10.0f]
lineBreakMode:NSLineBreakByClipping
alignment:NSTextAlignmentCenter];
CG_EXTERN void CGContextShowText(CGContextRef c, const char *string,
size_t length) CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
CGContextSaveGState(context);
// Tanslate and scale upside-down to compensate for Quartz's inverted coordinate system
CGContextSetTextMatrix(context, CGAffineTransformMake(1.0,0.0, 0.0, -1.0, 0.0, 0.0));
CGContextSelectFont(context, "Helvetica", 10.0f, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetTextPosition(context, xValue, rect.size.height-heightOfText);
if ([value canBeConvertedToEncoding:NSMacOSRomanStringEncoding])
{
CGContextShowText(context, [value cStringUsingEncoding:NSMacOSRomanStringEncoding],5);
// strlen([value cStringUsingEncoding:NSMacOSRomanStringEncoding]));
}
CGContextRestoreGState(context);