Вопрос

У меня есть NSView, в котором пользователь может рисовать круги.Эти круги хранятся в виде массива NSBezierPaths, и в drawRect: я перебираю массив и вызываю -stroke на каждом из путей.Как мне добавить кнопку для увеличения и уменьшения масштаба NSView?Просто изменить границы представления?

Спасибо.

Это было полезно?

Решение

Отправьте свое мнение a scaleUnitSquareToSize: Сообщение.

Другие советы

Вы также можете счесть это информативным:

https://developer.apple.com/library/content/qa/qa1346/_index.html

Код в этом документе позволяет вам добавить свойство "масштаб" к представлению.

Приведенные выше ответы не сработали для моего сценария, но привели меня к решению.

Обновленная ссылка на ответ @Peter была полезной: Масштабируемость единиц измерения

Я нашел два способа масштабирования:

  1. Обрезка границ вручную
  2. Преодолевая границы с scaleUnitSquareToSize

Я создал небольшой тестовый проект.Оба решения можно найти в моем репозитории GitHub : Границы и Фреймскроппинг и масштабирование

Чтобы понять границы и фреймы, прочтите эту статью SO: разница-между-рамкой-и-границами.

Быстрый scalling - код:

let scaleSize = NSSize(width: 0.5, height: 0.5)
// 0.5 - Half the size
// 1.0 - No calling
// 2.0 - double the size , ... etc
myView?.scaleUnitSquare(to: scaleSize)
myView?.needsDisplay = true
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top