Zoom em uma NSView
-
20-09-2019 - |
Pergunta
Eu tenho uma View na qual o usuário pode desenhar círculos. Esses círculos são armazenados como uma variedade de nsbezierpaths e em drawrect:, eu fico através da matriz e ligo -stroke
em cada um dos caminhos. Como adiciono um botão para aumentar e sair do zoom na NSView? Basta mudar os limites da vista?
Obrigado.
Solução
Envie sua opinião uma scaleUnitSquareToSize:
mensagem.
Outras dicas
Você também pode achar isso informativo:
https://developer.apple.com/library/content/qa/qa1346/_index.html
O código nesse documento permite adicionar uma propriedade "escala" a uma visualização.
As respostas acima não funcionaram para o meu cenário, mas me levaram a uma solução.
O link atualizado para a resposta de @Peter foi útil: ScaleUnitsquaretosize
Eu encontrei duas almas para o zoom:
- Cortando os limites manualmente
- Rechendo os limites com
scaleUnitSquareToSize
Eu criei um pequeno projeto de teste. Ambas as soluções podem ser encontradas no meu repo Github: BoundsandFramesCropping eScalling
Para entender os limites versus os quadros, leia isto, então artigo: diferença entre o quadro e os limites.
Código Swift 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