#swift #apple-pencil
Вопрос:
Я разрабатываю простое приложение для рисования iOS с помощью swift, PencilKit.
Я планирую это
- при прикосновении с помощью apple pencil или другого стилуса
- нарисуйте линии ( установите PKInkingTool в инструмент canvas )
- еще (пальцем)
- стирание линий ( установите PKEraserTool в инструмент canvas )
Таким образом, вы можете рисовать линии карандашом и стирать их пальцем
Но есть и трудности. Даже если он изменяет инструмент во время рисования, измененные инструменты холста не отражаются мгновенно, они отражаются, когда вы убираете руку (или карандаш) с экрана.
Как правильно отразить измененный инструмент при рисовании?
мой код таков
import PencilKit
class MyPKCanvasView: PKCanvasView {
private enum toolType:String {
case pen
case erazer
}
private let pen = PKInkingTool(.pen, color: .black, width: 30)
private let erazer = PKEraserTool(.bitmap)
private var currentTool: toolType = .pen {
willSet {
switch newValue {
case .pen:
self.tool = self.pen
case .erazer:
print("changed:eraser")
self.tool = self.erazer
}
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
switch touch.type {
case .pencil:
fallthrough
case .stylus:
print("pen")
self.changeTool(.pen)
default:
print("finger")
self.changeTool(.erazer)
}
}
}
private func changeTool(_ tool: toolType) {
if self.currentTool == tool {
return
}
self.currentTool = tool
}
}
Комментарии:
1. Ты когда-нибудь понимал это? Насколько я могу судить, набор карандашей все еще очень и очень ограничен. Я уже некоторое время пытаюсь собрать что-то воедино, и мне кажется, что мне было бы лучше написать свой собственный движок рисования, потратив столько времени впустую.