我使用此功能绘制自定义UILabel。它适用于iOS 6及更早版本,但在iOS 7中失败。如果我用CGContextSetFillColorWithColor替换CGContextSetStrokeColorWithColor,它适用于iOS7但不适用于6及更早版本。
void ShadowedStrokedText(CGContextRef ctx,NSString *text,CGPoint textStartPont,UIColor *textColor,UIFont *font,CGFloat lineWidth,UIColor * shadowColor,CGFloat shadowThickness){
CGContextSaveGState(ctx);
CGContextSetInterpolationQuality(ctx,kCGInterpolationHigh);
CGContextSetLineJoin(ctx, kCGLineJoinRound);
CGContextSetLineWidth(ctx, lineWidth);
CGContextSetStrokeColorWithColor(ctx, textColor.CGColor);
//---this works with iOS7
//CGContextSetFillColorWithColor(ctx, textColor.CGColor);
CGContextSetTextDrawingMode(ctx, kCGTextStroke);
CGContextSetShadowWithColor(ctx,CGSizeMake(0,0),shadowThickness,[shadowColor CGColor]);
[text drawAtPoint:textStartPont withFont:font];
CGContextRestoreGState(ctx);}
为什么?
答案 0 :(得分:0)
drawAtPoint:withFont:
是deprecated in iOS7:
drawAtPoint:withFont:
使用指定的字体在当前图形上下文中的指定点处在单行中绘制字符串。 (在iOS 7.0中不推荐使用。使用drawAtPoint:withAttributes:相反。)