J'ai utilisé ce guide: http://developer.apple.com/mac/library/qa/qa2004/qa1346.html pour implémenter la mise à l'échelle dans une vue spéciale. La vue mise à l'échelle est la vue de document d'un NSScrollView. Le problème est que lorsque j'appelle -scaleUnitSquareToSize, alors appelez -setNeedsDisplay: YES (j'ai aussi essayé -setNeedsDisplay: YES dans la vue déroulante), la vue (pas les barres de défilement, juste tout à l'intérieur) devient vide. Si je redimensionne la fenêtre qui contient la vue, son contenu réapparaît et s'affiche correctement. Mais dès que je redimensionne et redessine, il disparaît à nouveau. Des idées sur la façon de forcer la vue à rafraîchir correctement?NSView -scaleUnitSquareToSize laisse l'affichage vide jusqu'à ce qu'il soit redimensionné malgré le message -setNeedsDisplay
En outre, désolé de ne pas fournir le code source, mais le code est secret commercial, alors ...
Eh bien, j'ai vérifié les limites et les valeurs de cadre pour les 3 vues, et les valeurs ne sont pas différentes dans les deux cas (invisible ou visible). Voir http://cl.ly/1o6F pour plus de détails sur les limites et les valeurs d'image et les étapes à reproduire. Fondamentalement, c'est scale-> invisible, resize-> visible, unscale-> invisible, rescale-> visible, et après cette séquence je me retrouve avec une vue visible qui est mise à l'échelle. Mais toutes les valeurs de frame et de bounds des vues scaled/invisible et scaled/visible correspondent. Cela n'aide pas non plus à envoyer setNeedsDisplay à toutes les vues. –
Huh ... Je viens de le réparer en appelant [[self documentView] setFrame: [[self documentView] cadre]]; 'après la mise à l'échelle. Bizarre ... –
l'envoi de '-setFrame:' va forcer tout ce qui est au-dessus de votre vue dans la hiérarchie de vue pour redessiner le rect englobant le nouveau cadre et le cadre précédent, et ce dessin sera vidé à l'écran. Ce n'est pas clair pour moi pourquoi cela ne fonctionnait pas déjà pour vous. Je recommande de déposer un rapport de bogue. – NSResponder