2012-10-27 14 views
8
'un metin rengini değiştirme

Nesneye yeni yenilikler ekledim, UIsegmentControl uygulamasında seçilen segmentin metin rengini değiştirmem gerekiyor. Aşağıdaki koddan kullanılır.UISegmentedControl

[[UIsegmentControl.subviews objectAtIndex:segment.selectedSegmentIndex] setTintColor:[UIColor redColor]]; 

bir UISegmentedControl tek segmentin metin özelliklerini ayarlamak için hiçbir standart API vardır ..

cevap

38

Seçilen segment başlığının özel rengini UISegmentedControl olarak ayarlamanın yolu yoktur. forState:'daki UIControlState, normal ve seçili durum için segment metninin niteliklerini ayarlamak için kullanılır. Kişisel Kod itibaren

:

[segmnt_cntrl setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Arial" size:16.0], 
                  NSForegroundColorAttributeName:[UIColor redColor], 
                  NSShadowAttributeName:shadow} 
                 forState:UIControlStateNormal]; 

Segment mefhumlarının tarifleri sizin nesne ile segmnt_cntrl değiştirin:

[[UIsegmentControl.subviews objectAtIndex:segment.selectedSegmentIndex] setTintColor:[UIColor redColor]]; 

Bu kod deneyin. Bunu deneyin, tüm hedefinize ulaşmanıza yardımcı olabilir.

Teşekkür

+3

Bu yanıt, ilk paragrafınız haricinde doğrudur. ForState: 'içindeki 'UIControlState', normal ve seçili segment metni için öznitelikleri ayarlamak için kullanılabilir. – jrturton

+0

Teşekkürler, Doğru Jrturton. Yanlışlıkla yapıldı. –

+0

Cevabınızı doğru yapmak için düzenlemelisiniz. – jrturton

2

segmenti bana lütfen color.Help değiştirir. Bölünmemiş kontrolün kestirimci yaklaşımını bölümlenmiş kontrolün görünüm hiyerarşisine uygulayabilir, istediğiniz UILabel'ı (varsa) bulabilir ve bu etiketin niteliklerini ayarlayabilirsiniz. Daha iyi bir yaklaşım, bir UISegmentedControl öykünen özel bir denetim bulmak (veya yazmak) ve tek bir segmentin ihtiyaç duyduğunuz şekilde özelleştirilmesini sağlar.

Düzenleme: Aslında

, ben bakış yanlış açıdan bu bakıyordu. Cevabım, belirli bir segment dizini için öznitelikleri ayarlamaya dayanıyordu. Ama aslında bu, UIControlStateSelected durumu için metin öznitelikleri ayarlanarak elde edilebilir. Karışıklık için özür dilerim.

+0

Belirli bir denetim durumu için UIAppearance yöntemlerini kullanarak metin niteliklerini ayarlayabilirsiniz. Yani bu cevap yanlış. – jrturton

+0

@jrturton Elbette. Benim hatam. Bunu segment endeksi açısından düşündüm. Ancak bu durumda vurgulanan durum için yapılabilir. Cevabımı güncelleyeceğim. Teşekkürler – rmaddy

18

iOS 7'de vurgulanan segmentin metin rengini değiştirmek gerekiyorsa, burada bir çözüm (bulmak için bir süre götürdü, ama thanks to this post) 'dir: referanslar ile

[[UISegmentedControl appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor colorBlack]} forState:UIControlStateSelected]; 
+0

gölge ad özniteliğini bulabilirim, lütfen vurgulananın yanı sıra normal segmentin siyah rengini değiştirmek istersem ne yapmam gerektiğini söyler misiniz? Şu anda mavi renkte –

+0

@NehaDangui, 'UIControlStateSelected' yerine UIControlStateNormal '(veya gerekiyorsa' UIControlStateHighlighted ') ile değiştirilebilecektir. –

2

@ Swift için

Cevap ben-:

UISegmentedControl.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red], for: .selected) 
0

, Swift 3 @Babul PRABHAKAR cevabı Güncellendi yaklaşık yarım düzine minik işler değişti çünkü: Sen her türlü hile ve davranır için HMSegmentedControl kullanabilirsiniz

UISegmentedControl.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red as Any], for: .selected) 
0

.

HMsegmentedController kullanarak yazı tipini değiştirmek çok kolaydır. HMSegmentedController'ı ayarlamak için, nitelikleri açıklayan bir sözlük ekleyip selectedTitleTextAttributes özelliğine iletme işlevinde, örnek kod verilir.

Bu seçili sekmeyi kullanmak, siyah renk kullanılarak vurgulanır.

İlgili konular