Zoomant un NSView
-
20-09-2019 - |
Question
I ai un NSView dans lequel l'utilisateur peut dessiner des cercles. Ces cercles sont stockés dans un tableau de NSBezierPaths, et dans la boucle I du drawRect à travers le réseau et appellent -stroke
sur chacune des voies. Comment puis-je ajouter un bouton pour zoomer et le NSView? Il suffit de modifier les limites de la vue?
Merci.
La solution
Envoyez-nous votre point de vue un message scaleUnitSquareToSize:
Autres conseils
Vous pouvez également trouver cette information:
https://developer.apple.com/library/content /qa/qa1346/_index.html
Le code dans ce document vous permet d'ajouter une propriété « échelle » à une vue.
Les réponses ci-dessus ne fonctionnent pas pour mon scénario, mais m'a conduit à une solution.
Le lien mis à jour @ La réponse de Pierre utile: scaleUnitSquareToSize
Je l'ai trouvé deux soultions pour zooming:
- Rognage les limites manuellement
- scalling les limites avec
scaleUnitSquareToSize
J'ai créé un petit projet de test. Les deux solutions peuvent être trouvées sur mon repo GitHub: BoundsAndFramesCroppingAndScalling
Pour comprendre les limites vs cadres lisent cet article SO: différence-entre-frame-et-les-bornes .
Swift code 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