watchOS 上具有核心图形的莫尔效应?
Moire effect with core graphics on watchOS?
在 watchOS 上,我使用以下代码绘制了一个圆圈:
// Create a graphics context
UIGraphicsBeginImageContext(CGSize.init(width: 18.0, height: 18.0))
let context = UIGraphicsGetCurrentContext()
// Draw a circle
let rect = CGRect.init(x: 1.0, y: 1.0, width: 16.0, height: 16.0)
let border = UIBezierPath(ovalIn: rect)
border.lineWidth = 1.0
UIColor.white.setStroke()
border.stroke()
// Convert to UIImage
let cgimage = context!.makeImage();
let uiimage = UIImage(cgImage: cgimage!)
// End the graphics context
UIGraphicsEndImageContext()
圆圈画好了,但是很难看,好像有云纹,看图,"XX"文字左边:
应该可以避免这种模式并画一个干净的圆圈,因为时间也显示得很清楚。但是怎么办?
UIGraphicsBeginImageContext
创建绘制比例为 1 的上下文。换句话说,它是非 Retina。
尝试替换
UIGraphicsBeginImageContext(CGSize.init(width: 18.0, height: 18.0))
和
UIGraphicsBeginImageContextWithOptions(CGSize.init(width: 18.0, height: 18.0), false, 0)
为屏幕比例指定 0 使其默认为当前屏幕比例。如果这不起作用,请告诉我。 :)
在 watchOS 上,我使用以下代码绘制了一个圆圈:
// Create a graphics context
UIGraphicsBeginImageContext(CGSize.init(width: 18.0, height: 18.0))
let context = UIGraphicsGetCurrentContext()
// Draw a circle
let rect = CGRect.init(x: 1.0, y: 1.0, width: 16.0, height: 16.0)
let border = UIBezierPath(ovalIn: rect)
border.lineWidth = 1.0
UIColor.white.setStroke()
border.stroke()
// Convert to UIImage
let cgimage = context!.makeImage();
let uiimage = UIImage(cgImage: cgimage!)
// End the graphics context
UIGraphicsEndImageContext()
圆圈画好了,但是很难看,好像有云纹,看图,"XX"文字左边:
应该可以避免这种模式并画一个干净的圆圈,因为时间也显示得很清楚。但是怎么办?
UIGraphicsBeginImageContext
创建绘制比例为 1 的上下文。换句话说,它是非 Retina。
尝试替换
UIGraphicsBeginImageContext(CGSize.init(width: 18.0, height: 18.0))
和
UIGraphicsBeginImageContextWithOptions(CGSize.init(width: 18.0, height: 18.0), false, 0)
为屏幕比例指定 0 使其默认为当前屏幕比例。如果这不起作用,请告诉我。 :)