2009-05-08 8 views
1

Salutations à tous,ne fonctionne pas?

J'ai un problème embarrassant. J'ai un pointeur vers un NSView vanillé qui a été initialisé dans une plume. Je message que le NSView avec

[myNSView setFrame:NSMakeRect(0,0,816,1056)]; 

mais quand je fais un pas dans le débogueur, myNSView a un cadre de {{0,0}, {801, 1041}}. Les dimensions du rectangle sont 15 de moins que ce que j'ai spécifié! Cela arrive régulièrement. Si je spécifie deux [setFrames] dans une rangée, tout fonctionne, mais ce n'est bien sûr pas la réponse.

Pour résumer, quelqu'un sait-il pourquoi setFrame échouerait?

Merci

+0

Je n'ai honnêtement aucune idée. Cela devrait fonctionner. Pourriez-vous donner plus de contexte? – Kriem

+0

Je dessine du contenu personnalisé, disons une page de texte. Je commence avec une vue de défilement et un incorporé dedans qui est une vue de page. J'ai deux actions, ajuster la page et 100% vue (semblable à d'autres téléspectateurs). Je veux pouvoir faire un zoom avant et arrière. Pour ce faire, je change la taille de l'image de la page, et mon espoir est que la vue défilera prendra soin de panoramique autour. Cela fonctionne principalement, à l'exception du comportement de redimensionnement impair de la vue de page. – EightyEight

+0

Hmm, l'intégration pourrait être déconner avec vos dimensions. A part ça, je n'en ai toujours aucune idée. Pardon. :) J'ai voté la question, alors peut-être que quelqu'un d'autre peut vous aider. Bonne chance cependant! – Kriem

Répondre

4

15px est exactement la taille d'un NSScroller à NSRegularControlSize. Je pense que votre NSScrollView est configuré pour masquer automatiquement les scrollers.

Essayez de désactiver les scrollers horizontaux et verticaux de votre scrollView dans la NIB, si cela résout le problème, vous saurez où chercher à partir de là. C'est quelque chose lié au clipView du scrollView autoresizing le documentView. Le clipView lui-même est en cours d'autorésisation lorsque les scrollers apparaissent; directement après avoir défini le documentView à un frameSize (le paramètre 100% je suppose) qui nécessite des défileurs.

+0

C'était génial, merci beaucoup! J'ai tourné des rouleaux et tout va maintenant. Donc, le raisonnement est quelque chose comme ceci: 1. Je change la taille de la page vue 2. défilement afficher mises à jour pour inclure les dérouleurs 3. clipview redimensionne pour accueillir les rouleaux et redimensionne les sous-vues qui comprend page vue. À droite? – EightyEight

+0

Oui, exactement :) Si vous entourez votre setFrame: appelez avec [[theScrollView contentView] setAutoresizesSubviews: NO]; et revenir sur quand terminé, je pense que cela devrait faire l'affaire. –