PKCanvasView увеличивает размер содержимого во всех направлениях (бесконечный холст)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 PKCanvasView увеличивает размер содержимого во всех направлениях (бесконечный холст)

Сообщение Anonymous »

Я хочу разработать CanvasView, который можно было бы расширять в любом направлении (сверху, снизу, влево, вправо), когда пользователь приближается к нему близко к границам холста, сохраняя при этом стабильную систему отсчета пользователя (например, пример GIF ниже). Это легко реализовать для правого и нижнего направлений, используя фрагмент кода, подобный приведенному ниже, вдохновленный этим ответом StackOverflow. Однако я пока не нашел хорошего решения, как расширить его сверху или слева.

Код: Выделить всё

    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
}
}
Вот GIF-изображение желаемого состояния, запись экрана из Apple Freeform. В нем я рисую границы, а затем расширяю экран.
В новом файле Freeform при немедленном уменьшении до максимального масштаба (10%) требуется доля секунды, чтобы расширить холст, но это происходит только снизу и справа (при пустом холсте). При рисовании он может расширяться в любом направлении.
Изображение

Думаю, будет полезно отметить, что у меня нет большого опыта разработки мобильных приложений на языке Swift, это мое первое приложение.

Подробнее здесь: https://stackoverflow.com/questions/783 ... ite-canvas
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как создать холст на С++, похожий на веб-холст [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    92 Просмотры
    Последнее сообщение Anonymous
  • Вращение pkcanvasview влияет на размер pkerasertool
    Anonymous » » в форуме IOS
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как создать бесконечность PKCanvasView
    Гость » » в форуме IOS
    0 Ответы
    27 Просмотры
    Последнее сообщение Гость
  • Swift AutoLayout — PKCanvasView contentSize
    Anonymous » » в форуме IOS
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Удалить UIEditMenuInteraction из PKCanvasView
    Anonymous » » в форуме IOS
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»