Код: Выделить всё
func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
let threshold: CGFloat = 200 // Distance from edge to trigger expansion
let growValue: CGFloat = 400 // Amount to grow canvas size
let drawingSize = canvasView.drawing.bounds
if drawingSize.height >= (canvasView.contentSize.height - threshold) {
canvasView.contentSize = CGSize(
width: canvasView.contentSize.width + growValue,
height: canvasView.contentSize.height + growValue
)
}
}
Один из подходов к расширению экрана — смещение обзора пользователя. (и, возможно, измените положение всего холста), и все это при пролистывании вблизи границ CanvasView.contentSize. Однако, пытаясь сделать это, я обнаружил, что этот опыт не удобен для пользователя. Популярные приложения для рисования, в том числе собственный Freeform от Apple, способны плавно расширять холст, сохраняя при этом стабильный кадр/положение пользователя (пример GIF ниже). Каким будет подход к повторению этого?
Вот пример кода для изменения положения + смещения:
Код: Выделить всё
func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
let threshold: CGFloat = 200 // Distance from edge to trigger expansion
let growValue: CGFloat = 400 // Amount to grow canvas size
let drawingSize = canvasView.drawing.bounds
// Check all four edges
if drawingSize.minX = (canvasView.contentSize.height - threshold) {
canvasView.contentSize.height += growValue
}
}
В новом файле Freeform при немедленном уменьшении до максимального масштаба (10%) требуется доля секунды, чтобы расширить холст, но это происходит только снизу и справа (при пустом холсте). При рисовании он может расширяться в любом направлении.

Думаю, будет полезно отметить, что у меня нет большого опыта разработки мобильных приложений на языке Swift, это мое первое приложение.
Подробнее здесь: https://stackoverflow.com/questions/783 ... ite-canvas