Zoom en una NSView
-
20-09-2019 - |
Pregunta
Tengo una NSView en la que el usuario puede dibujar círculos. Estos círculos se almacenan como una matriz de NSBezierPaths, y en drawRect :, bucle I a través de la matriz y llaman -stroke
en cada uno de los caminos. ¿Cómo agrego un botón para acercar y alejar la NSView? Sólo cambia los límites de la vista?
Gracias.
Solución
Envíe su vista un mensaje scaleUnitSquareToSize:
Otros consejos
También puede encontrar este informativo:
https://developer.apple.com/library/content /qa/qa1346/_index.html
El código en ese documento le permite agregar una propiedad de "escala" a una vista.
Las respuestas anteriores no funcionaron para mi escenario, pero me llevaron a una solución.
El enlace actualizado a @ respuesta de Pedro fue muy útil: scaleUnitSquareToSize
He encontrado dos soultions para un zoom:
- Recorte de los límites manualmente
- escalado entre los límites con
scaleUnitSquareToSize
He creado un pequeño proyecto de prueba. Ambas soluciones se pueden encontrar en mi repo GitHub: BoundsAndFramesCroppingAndScalling
Para entender los límites vs marcos leen este artículo SO: diferencia-entre-la-frame-and-the-límites .
código escalado entre Swift:
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