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.

Était-ce utile?

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:

  1. Rognage les limites manuellement
  2. 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top