1
Я работаю над проектом, где я хочу, чтобы при касании пользователя двигаться в горизонтальном направлении горизонтальная линия должна рисоваться, а касание пользователя двигаться в вертикальном направлении, тогда вертикальная линия должна рисовать. Просьба предложить некоторое решение с помощью Swift. Я пробовал ниже. Но это розыгрыш свободной линии.Нарисуйте горизонтальную или вертикальную линию, используя touch в iOS
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
let touch: AnyObject? = touches.first
let lastPoint = touch!.previousLocation(in: holderView)
path.move(to: CGPoint(x: lastPoint.x, y: lastPoint.y))
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesMoved(touches, with: event)
let touch: AnyObject? = touches.first
let currentPoint = touch!.location(in: holderView)
path.addLine(to: CGPoint(x: currentPoint.x, y: currentPoint.y))
//Design path in layer
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.orange.cgColor
shapeLayer.lineWidth = 20.0
holderView.layer.addSublayer(shapeLayer)
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesEnded(touches, with: event)
path=UIBezierPath()
}
вы можете проверить эту ссылку http://stackoverflow.com/questions/4669490/how-to-draw-line-on-touch-event –
что, если пользователь прикасается к экрану и создает путь кривой точек? –
Столько неизвестных! Ваш код говорит: «Есть путь беззерцания, когда начинается касание, прыгайте в положение касания, когда касание движется, тянет линию к новой позиции и отображает результат в новом подуровне, когда заканчивается касание, создайте новый путь безье», , Логика подуровня кажется крайне неэффективной (создание сотен частично повторяющихся подслоев), и создание пути безье кажется излишне обратным, но это не относится к делу. Учитывая объяснение вышеприведенной логики, вы могли бы прояснить, чего вы хотите достичь? – Baglan