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.

¿Fue útil?

Solución

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:

  1. Recorte de los límites manualmente
  2. 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top