我畫在我的drawRect實施路徑上一個UIView有:繪製1個像素的iOS
CGContextSetLineWidth(context, 0.5);
CGContextStrokePath(context);
抗鋸齒對我的CGContext上,我似乎無法畫1條像素線。
我試圖打開反鋸齒關閉有:
CGContextSetShouldAntialias(context, NO);
但後來我的邊角看起來可怕:
如何保持反鋸齒上,但停止該子1像素線的像素模糊?
我畫在我的drawRect實施路徑上一個UIView有:繪製1個像素的iOS
CGContextSetLineWidth(context, 0.5);
CGContextStrokePath(context);
抗鋸齒對我的CGContext上,我似乎無法畫1條像素線。
我試圖打開反鋸齒關閉有:
CGContextSetShouldAntialias(context, NO);
但後來我的邊角看起來可怕:
如何保持反鋸齒上,但停止該子1像素線的像素模糊?
當繪製在iOS的一條線,你指定一個無限縮小線的座標。畫出的線將延伸到該線的兩側一半的筆畫寬度。
如果您的無限窄線具有整數座標和是水平或垂直的,所繪製的線將是兩個像素寬和灰色的,而不是一個像素寬和黑色(用抗混疊)。沒有抗鋸齒功能,線條會稍微移動,但角落看起來很醜。
爲了解決它,用在像素的中間座標(例如200.5/170.5),並打開反鋸齒上。
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGFloat inset = 0.5/[[UIScreen mainScreen] scale];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
// draw
CGContextSetLineWidth(context, inset);
CGContextSetStrokeColorWithColor(context, _lineColor.CGColor);
CGContextMoveToPoint(context, inset, 0);
CGContextAddLineToPoint(context, inset, CGRectGetHeight(rect));
CGContextStrokePath(context);
CGContextRestoreGState(context);
}
那是什麼'WKCommonUtil' thingy? –
@AndréFratelli可能是檢測視網膜設備的第三個框架。 –
@AndréFratelli,這是我自己製作的一個util類,用於測試設備是否爲視網膜。 – Chengjiong
您可以通過翻譯所有方面:
CGContextSaveGState(context);
CGFloat translation = 0.5f/[[UIScreen mainScreen] scale];
CGContextTranslateCTM(context, translation, translation);
... your drawing here ...
CGContextRestoreGState(context);
這一切!
爲我工作的唯一的解決辦法是這樣的:
override func drawRect(rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
CGContextSetLineWidth(context, 0.5)
CGContextMoveToPoint(context, 0.0, 0.25)
CGContextAddLineToPoint(context, rect.size.width, 0.25)
CGContextSetStrokeColorWithColor(context, UIColor.blackColor().CGColor)
CGContextStrokePath(context)
}
核芯顯卡不使用像素,但點。 – uchuugaka