2011-06-09 3 views
0

J'ai une vue personnalisée contenant NSImageView (myImageView) et NSButton (myButton). Lorsque l'utilisateur redimensionne la fenêtre (en utilisant le clic de la souris et faites glisser dans le coin inférieur droit de la fenêtre), myImageView et myButton est autoresized. Mais la vue personnalisée est différente de l'original. Comment le réparer? Aidez-moi, s'il vous plaît.Comment autoresize le bouton

Voici mon code:

Dans appDelegate.m

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
// Insert code here to initialize your application 
[window makeKeyWindow]; 
[window setFrameTopLeftPoint:NSMakePoint(0, 576)]; 
[window setFrame:NSMakeRect(0, 0, 768, 576) display:YES]; 

[window setBackgroundColor:[NSColor clearColor]]; 
[window center]; 

TestView *testView = [[TestView alloc]initWithFrame:NSMakeRect(0, 0, 768, 576)]; 
[testView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; 
[testView setAutoresizesSubviews:YES]; 
[window setContentView:testView];} 

Dans TestView.m

- (void)drawRect:(NSRect)dirtyRect { 
// Drawing code here. 
NSImageView *subView = [[NSImageView alloc]initWithFrame:NSMakeRect(0, 0, 768, 576)]; 
[subView setImage:[NSImage imageNamed:@"Copenhagen.jpg"]]; 
[subView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; 
[subView setImageScaling:NSImageScaleProportionallyDown]; 
[self addSubview:subView]; 
[subView release]; 

NSButton *subButton = [[NSButton alloc]initWithFrame:NSMakeRect(70, 100, 100, 40)]; 
[subButton setTitle:@"Click"]; 
[subButton setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable|NSViewMaxXMargin|NSViewMaxYMargin|NSViewMinXMargin|NSViewMinYMargin]; 
[self addSubview:subButton]; 
[subButton release]; 
[window setContentView:temp];} 

Merci beaucoup.

+0

Avez-vous défini un masque d'autorésisation pour votre vue personnalisée? Vous pouvez le faire soit dans Interface Builder, soit par programmation via '- [NSView setAutoresizingMask:]'. –

+0

J'ai déjà défini un masque d'autoresizing pour mes vues personnalisées, myImageView et myButton, mais myButton ne ressemble pas à l'original lors de l'autoréglage – user718408

+0

Je ne suis pas sûr de comprendre ce que vous voulez dire. Peut-être qu'une capture d'écran faciliterait la compréhension de votre question. –

Répondre

0

Vous ne souhaitez pas que la marge de gauche (NSViewMinXMargin) et la marge inférieure (NSViewMinYMargin) soient flexibles, vous devez donc les supprimer du masque d'autoresizing du bouton. Vous ne voulez probablement pas que le bouton lui-même soit redimensionné, en fait, utilisez uniquement

NSViewMaxXMargin | NSViewMaxYMargin 

comme masque d'autoresizing.

Le View Programming Guide est une bonne référence pour en savoir plus sur les masques autoresizing.

+0

Je les ai supprimés. Mais plus tard, je redimensionne la fenêtre, cela devient comme ceci: [image] (http://img01.imagecanon.com/img.php?view=231ff92b0178ab6b1fc3be653709b23a) – user718408

+0

@user Voulez-vous redimensionner le bouton? Si ce n'est pas le cas, supprimez NSViewWidthSizable et NSViewHeightSizable du masque autoresizing. –