2011-03-03 109 views
1

我有一個自定義UIView,它會生成某種需要用數字標註高度的圖。在iOS上使用Quartz2d時字體平滑/消除鋸齒?

所有繪圖都可以,當用quartz2d創建圓等時,它會正確反映。
但是,當我想繪製一個NSString到上下文中時,字體平滑/反鋸齒會混亂。
禁用消除鋸齒確實會導致文本更薄,因此交換機可以正常工作,但消除鋸齒的文本不可用。它看起來不像iOS中呈現的正常文本那樣清脆。

CGContextSetAllowsAntialiasing(context, YES); 
CGContextSetShouldAntialias(context, YES); 
CGContextSetShouldSmoothFonts(context, YES); 
NSString *stringValue = [NSString stringWithFormat:@"%d", input.height]; 
UIFont *font = [UIFont systemFontOfSize:textsize]; 

[stringValue drawAtPoint:CGPointMake(x, y) withFont:font]; 

我沒有關於如何解決這個字體呈現問題的線索。有任何想法嗎?

回答

2

我解決這個問題是隻需添加幾UILabel編程方式與正確的座標。這些UILabel實例完美地呈現文本,所以這解決了我的問題。

3

如果您願意放棄文本上的消除鋸齒功能,則可以保存打開消除鋸齒功能的上下文。

GCContextSaveGState(context); 

開啓反鋸齒關閉並呈現文本:

GCContextSetShouldAntialias(context, NO); 
NSString *stringValue = [NSString stringWithFormat:@"%d", input.height]; 
UIFont *font = [UIFont systemFontOfSize:textSize]; 

[stringValue drawAtPoint:CGPointMake(x, y) withFont:font]; 

然後恢復圖形上下文回到它以前的空間。 (打開了抗鋸齒功能)渲染繪圖的其餘部分。

CGContextRestoreGState(context);