我正在尝试让我的用户精确选择他们在UIImage上触摸的一个点。 我左上角有一个放大镜,显示他们以2倍变焦触摸的位置。效果很好。
我正在尝试在放大区域的中心添加一个“十字准线”,以使选择更清晰。
使用下面的代码,不会看到任何行。
//Bulk of the magifying code
public override func drawRect(rect: CGRect) {
let context: CGContextRef = UIGraphicsGetCurrentContext()!
CGContextScaleCTM(context, 2, 2)
CGContextTranslateCTM(context, -self.touchPoint.x, -self.touchPoint.y)
drawLine(context)
self.viewToMagnify.layer.renderInContext(context)
}
//Code for drawing horizontal line of crosshair
private func drawLine(ctx: CGContext) {
let lineHeight: CGFloat = 3.0
let lineWidth: CGFloat = min(bounds.width, bounds.height) * 0.3
let horizontalPath = UIBezierPath()
horizontalPath.lineWidth = lineHeight
let hStart = CGPoint(x:bounds.width/2 - lineWidth/2, y:bounds.height/2)
let hEnd = CGPoint(x:bounds.width/2 + lineWidth/2,y:bounds.height/2)
horizontalPath.moveToPoint(hStart)
horizontalPath.addLineToPoint(hEnd)
UIColor.whiteColor().setStroke()
horizontalPath.stroke()
}
线可能被绘制但是太小或者没有我期望的那样。
我尝试过使用CGContextAddPath
我认为问题可能与renderInContextView
没有考虑我的绘图有关,或者我没有正确添加上下文的路径?
放大代码基于GJNeilson's work,我所做的就是将放大镜的中心点固定在左上方并移除遮罩。
答案 0 :(得分:1)
我认为您正在绘制线条然后在其上绘制图像。最后尝试拨打drawLine
。
此外,当您绘制可能将其定位在屏幕外的线时,比例和平移仍然有效。您可能需要使用CGContextSaveGState
和CGContextRestoreGState