2012-03-27 6 views
4

http://f.cl.ly/items/350X3c0h0A0k3s3f1R1h/Screen%20Shot%202012-03-27%20at%202.53.41%20PM.pngErstellen eines benutzerdefinierten NSSlider Based Off von Quicktime X Trim UI

ich an einer Anwendung arbeiten, die ein Benutzer eine Reihe von Zeit in einem Stück Audio für OS X. Die meisten der erlauben werde wählen Suche Ich habe getan, um eine Benutzeroberfläche wie die oben genannte Trimmen Schnittstelle von QuickTime X hat unfortunately turned up many iOS related APIs.

Mein erster Instinkt ist, dass dies eine stark angepasste NSSlider ist. Gibt es eine allgemeine Richtung, in die ich gehen sollte, wenn ich versuche, dies zu schaffen? Ist NSSlider die beste Route? Alle Hinweise, Tipps oder Code würden sehr geschätzt werden.

EDIT: Es gab einen guten Kommentar darüber möglicherweise eine benutzerdefinierte Kontrolle. Jede Anleitung dazu wäre ebenfalls sehr zu begrüßen!

+2

+1 für Ihren Geschmack in der Musik. – yuji

+1

Sieht für mich überhaupt nicht wie ein Schieberegler aus. Ich vermute, dass es ein benutzerdefiniertes Steuerelement ist. –

Antwort

1

Erstellen Sie ein benutzerdefiniertes Steuerelement. Hier ist, was ich für meine benutzerdefinierten Steuerelemente tun:

Zuerst wird die Schnittstelle:

@interface AS_CustomControl : NSControl <NSCoding> 
{ 
} 
@end 

Dann wird die Umsetzung:

@implementation AS_CustomControl 

-(id)initWithFrame:(NSRect)rect 
{  
    if (self = [super initWithFrame:rect]) 
    { 
     [self initCustomControl]; 
    } 
    return self; 
} 

-(id)initWithCoder:(NSCoder*)coder 
{  
    if (self = [super initWithCoder:coder]) 
    { 
     [self initCustomControl]; 
    } 
    return self; 
} 

-(void)initCustomControl 
{ 
    // put any custom initialization here 
    // such as default variable state 
} 

-(void)dealloc 
{ 
    [super dealloc]; 
} 

-(void)encodeWithCoder:(NSCoder*)coder 
{ 
    [super encodeWithCoder:coder]; 
} 

+(Class)cellClass 
{ 
    return [NSActionCell class]; 
} 
@end 

Die cellClass Methode stellt sicher, dass Ihre individuelle Regelung Meldungen ausgelöst wird, wenn der Benutzer interagiert mit ihm.

Es sollte dann nur ein Fall sein, die Wellenform in drawRect zu zeichnen: und mouseDown überschreibt: mouseDragged: und mouseUp: messages, um die Bereichsauswahl zu handhaben.