Масштабирование в NSView
-
20-09-2019 - |
Вопрос
У меня есть NSView, в котором пользователь может рисовать круги.Эти круги хранятся в виде массива NSBezierPaths, и в drawRect: я перебираю массив и вызываю -stroke
на каждом из путей.Как мне добавить кнопку для увеличения и уменьшения масштаба NSView?Просто изменить границы представления?
Спасибо.
Решение
Отправьте свое мнение a scaleUnitSquareToSize:
Сообщение.
Другие советы
Вы также можете счесть это информативным:
https://developer.apple.com/library/content/qa/qa1346/_index.html
Код в этом документе позволяет вам добавить свойство "масштаб" к представлению.
Приведенные выше ответы не сработали для моего сценария, но привели меня к решению.
Обновленная ссылка на ответ @Peter была полезной: Масштабируемость единиц измерения
Я нашел два способа масштабирования:
- Обрезка границ вручную
- Преодолевая границы с
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