2012-03-31 15 views
7

Çeşitli bölümlerin farklı renkler olduğu NSSegmentedControl alt sınıfına sahip olmak isterim.NSSegmentedControl Renkler

bütün kumandayı bu durumda kırmızı aynı renk, bölümlenmiş olduğu 1. o renklerin dışında yakın görünüyor
- (void)drawRect:(NSRect)dirtyRect 
{ 
    NSColor *color = [NSColor redColor]; 
    [color setFill]; 
    NSRectFill(dirtyRect); 
    [super drawRect:dirtyRect]; 
} 

enter image description here

ve 2. var: Ben NSSegmentedControl sınıflara ve aşağıdaki kodu ekleyerek denedim kenarlarda biraz renk akıyor. Çeşitli kesimleri eşsiz renklerini gösterdiklerini, ancak ben pek bu kabul edilebilir dikkate alacağını

- (void)drawSegment:(NSInteger)segment inFrame:(NSRect)frame withView:(NSView *)controlView 
{ 
    NSColor *color; 
    switch (segment) { 
     case 0: 
      color = [NSColor redColor]; 
      break; 
     case 1: 
      color = [NSColor blueColor]; 
      break; 
     case 2: 
      color = [NSColor greenColor]; 
      break; 
     case 3: 
      color = [NSColor orangeColor]; 
      break; 
     default: 
      break; 
    } 
    [color setFill]; 
    NSRectFill(frame); 
    [super drawSegment:segment inFrame:frame withView:controlView]; 
} 

enter image description here

Bunun anlamı daha iyidir:

Ben de NSSegmentedCell sınıflara ve bu ekleme çalıştı. Tüm segmentin o segment için uygun renkle doldurulmasını istiyorum ve ilk ekran görüntüsünde olduğu gibi gradyan ve gölgelendirme olması güzel olurdu.

Lütfen bunu nasıl başarabileceğimi bildirin.

Teşekkürler.

+0

devre dışı bırakmak için unutma Bölünmüş kontrolün mevcut uygulamasının çiziminde saydamlık kullandığını gösteren bir şans. Bu, kontrol altına aldığınız kırmızının parlamasını sağlar. Bu, Mac OS X'te yapılan herhangi bir güncelleme ile değişebilir. Bunu doğru şekilde yapmak için, tüm çizimin drawRect içindeki kendi NSView alt sınıfını yapmalısınız: varolan denetimi renklendirmek yerine. –

+0

Oh, Jon, muhtemelen söylediklerinizle ilgili, aslında yaklaşık yarım düzine farklı stil var. Diğer tarzların da bunu nasıl etkileyebileceğini merak ediyorum. –

cevap

4

Segmentler için sabit genişlik belirtmeniz gerekir.

enter image description here

Sonra kodu (Ekran Görüntüsü benim test projesinden ise)

enter image description here

oldukça iyi çalışacaktır ve renk tonunu Sen

[self.segment.cell setControlTint:NSClearControlTint ];