記事一覧

スライダーのレールの方

さて、レールの方だ。
オーバーライドするセレクタは drawBarInside: ということで、あとの要領自体はノブとだいたい同じだった。
Cocoa的にはレールじゃなくてバーって呼ぶみたいね。

サイズはどうやら完全な任意指定はできないみたいですねえ。
横サイズは InterfaceBuilder 上で横に引っ張れば任意の大きさにできるけど、縦サイズは mini/small/regular の3種類から選ぶしかないみたい。好きなサイズでやりたければ NSCell を直接継承して好きにやりなさいってことかな??
いずれにしても、そのサイズが引数 aRect に渡ってきます。

ちなみに、横サイズは 133px が標準的っぽい雰囲気ですかね。Audio Unit Effect with Cocoa UI のテンプレートに入ってたスライダーが 133px なのと、GarageBand の Generic UI が 133px でした。縦サイズはテンプレートの方が Regular で、GarageBand は Small のようです。

-(void)drawBarInside:(NSRect)aRect flipped:(BOOL)flipped
{
NSBundle *bundle = [NSBundle bundleWithIdentifier : @"com.MyCompany.audiounit.MyGreatPlugin"];
NSString *path = [bundle pathForImageResource:@"sliderRail.png"];
NSImage* img = [[[NSImage alloc] initByReferencingFile:path] autorelease];
[img drawInRect:aRect
fromRect:NSMakeRect(0,0,[img size].width,[img size].height)
operation:NSCompositeSourceOver
fraction:1.0];
}