2011-07-14 5 views
2

En regardant de nombreuses applications OSX, je vois souvent les fenêtres de préférences grossir de haut en bas en fonction du contenu de la vue activé par les boutons de la barre d'outils.Fenêtre animée Cocoa dans la fenêtre de préférences

Je voudrais savoir s'il y a un moyen de dimension de taille automatiser cadre ou si le seul moyen est de redimensionner et animer un programme.

Répondre

6

Je pense que vous ne pouvez utiliser setFrame de NSWindow: Affichage: Animer: Je ne pense pas que les fenêtres peuvent être dimensionnés automatiquement. Ainsi, lorsque vous modifiez le contenu que vous pouvez faire quelque chose comme ceci:

NSRect oldContentFrame = [oldContentView frame]; 
NSRect newContentFrame = [newContentView frame]; 

float widthDifference = oldContentFrame.size.width - newContentFrame.size.width; 
float heightDifference = oldContentFrame.size.height - newContentFrame.size.height; 

// Change the size of the window by the difference between the two views 
// and move the frame up 
NSRect windowFrame = [window frame]; 
windowFrame.size.width += widthDifference 
windowFrame.size.height += heightDifference; 
windowFrame.origin.y -= heightDifference; 

// Remove the old content 
[oldContentView removeFromSuperview]; 

// Change the size 
[window setFrame:windowFrame display:YES animate:YES]; 

// Add the new view 
[window setContentView:newContentView]; 
0

Jetez un oeil à DBPrefsWindowController par Dave Batton. Cela vous permet de faire exactement ce que vous voulez et presque toute la configuration est faite dans Interface Builder.

+0

Je préfère tout d'abord essayer de créer moi-même: P – MatterGoal

+0

juste pour la curiosité, la source de commande liée non plus accessible, savez-vous comment obtenir une copie? TIA! – Hofi

0

Bien Vous pouvez utiliser une bibliothèque RHPreferencesWindowController. il est facile à utiliser

RHPreferences

Questions connexes