2014-09-29 15 views
8

, ben şöyle bir etki yaratmak için arka plan resimleri ile UISegmentedControl kullandık:Tüm eyaletler için arka plan resimleri ayarladığımda neden UISegmentControl bölümlerim iOS 8'de vurgulanıyor? iOS 6/7 yılında

Customized UISegmentedControl

Öyle gibi standart durumlarında her UISegmentedControl için arka plan görüntüsü ayarlayarak bu başarılabilir : bir bölüm seçme olur ya vurgulandığında

UIImage *segmentedControlBackgroundImage = [UIImage imageNamed:@"profileSegmentedControlBackground"]; 
UIImage *segmentedControlBackgroundSelectedImage = [UIImage imageNamed:@"profileSegmentedControlBackgroundSelected"]; 

[self.segmentedControl setBackgroundImage:segmentedControlBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundImage forState:UIControlStateDisabled barMetrics:UIBarMetricsDefault]; 
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundSelectedImage forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundSelectedImage forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

, bu altından güzel mavi bar vardır ve ben metin rengi mavi metin rengini değiştirmek için özellikleri ayarlayın. Bölücüler için fazladan bir kod var, ama bunun alakasız olduğunu düşünüyorum.

Sorunum, iOS 8'de, segmentin arka planının griye dönüşmesine ve kötü görünmesine neden olan birkaç eylemin var olmasıdır; Seçiminizi değiştirdiğinizde, geçiş yaptığınız hücre geçiş tamamlanana kadar griye döner, diğeri ise önceden seçilmiş bir segmente dokunup basılı tutarsanız griye döner. Her ikisi de aynı görünür ve aşağıda görülebilir. muhtemelen ilgili bilgilerin

UISegmentedControl with strange highlighting

Bazı ekstra parçalar:

  • segmentedControl için tintColor Ben UISegmentedControl
  • sınıflara değilim
  • Ben hiçbir özelliklerini değişmemiştir açıktır UISegmentedControl görünüm proxy kullanarak
  • için 1 nokta geniş görüntü kullanıyorum E arka plan resimleri ve UISegmentedControl otomatik capInsets belirlenmesi ve imajını
+0

olacağını. Problemine bir çözüm buldun mu? – GraemeArthur

+0

Hayır. Yapabileceğim en iyi şey, sekmeleri değiştirdikten sonra ana iş parçacığında çok az şey olmasını sağlamaktı, böylece mümkün olduğunca az zaman için yanlış bir şekilde ortaya çıktı. – Acey

cevap

11

seçilen ve aynı zamanda vurgulanan için bölümlenmiş kontrol durumunu eksik olduğundan segment zaten seçili segmenti seçme hakkında gri olana nedeni döşeme edilir. davanız çağrıda

:

[self.segmentedControl setBackgroundImage:segmentedControlBackgroundSelectedImage forState:UIControlStateSelected | UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 

sorunu çözecektir. Geçiş

onu ben yeniden olamazdı tamamlar kadar

seçiminizi değiştirmek

, dokunduğunuz hücre gri olana, ama belki de bu ikisi sorunları çözecektir.

+0

Harika, bunu yaptı! Ve her iki problemi de çözdü. Yardım için teşekkürler. Ne garip bir API. Bölücü görüntüleri de özelleştiriyorum, bu sadece bu özelleştirme için gereken satırların yaklaşık iki katı kadar olacak. – Acey

+0

Hiçbir zaman, durumların birlikte maskelenebileceği bir şey olmadı. Hiçbir şey için teşekkürler Apple doktor! – Brenden

6

Her ihtimale Swift içinde ben de bu bulgu am

segmentedControl.setBackgroundImage(image, forState:[.Selected, .Highlighted], barMetrics:.Default)

+1

TEŞEKKÜR EDERİZ! İnsanlar böyle şeyler nasıl anlar? Dokümanlar yardımcı değil. – Brenden

İlgili konular