2012-06-25 16 views
5

ile garip davranışlar Uygulama temsilcisindeki bu ifadeler aracılığıyla bölümlere ayrılmış denetimin görünümünü ayarlıyorum.UISegmentedControl ve UIAppearance

[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_normal.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    [[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_selected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] 
     forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

    [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalNormal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalSelected.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 
    [[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_SelectedNormal.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

Sonuç iyi. Segmentlerden herhangi birini seçtiğimde arka plan ve bölücüler doğru şekilde ayarlandı (Uygulama ilk başlatıldığında Sipariş segmenti Varsayılan olarak seçilidir). Aşağıda gördüğünüz gibi Release segmentini seçtiğimde her şey iyi görünüyor. (Ben seçilen indeksi saklamak ve segmenti yeniden seçmek için viewDidLoad ayarlayın), bölücü bazı bilinmeyen için yanlış ayarlandı görünümüne geri görüş dışarı çıktığınızda

enter image description here

sorundur sebep.

enter image description here

A-Z, daha sonra serbest bırakın hafifçe vurursanız

, kendisini düzeltir. Bu hata, yalnızca görünüm ilk yüklendiğinde ve seçilen bölüm Yayınla veya A-Z olduğunda gerçekleşir. Sipariş seçildiğinde ve görünüm yüklendiğinde bölücü her zaman iyi görünür.

Resim boyutları: bölücü 2px genişliğindedir (tüm 3 görüntü aynı boyuttadır), arka planların her biri 2 px genişliğindedir.

Herhangi bir fikir ya da işaretçiyi çok takdir edersiniz, 10 saat boyunca saçlarımı çekip çıkarmaya çalışmak için bir çözüm bulmaya çalışıyorum.

+0

"UISegmentedControl" öğesinin "viewDidLoad" öğesinde seçili dizini ayarladıktan sonra "UISegmentedControl" yönteminin "setNeedsDisplay" yöntemini çağırın. Belki bu sorunu çözecektir. –

+0

Çalışmadı. Yine de teşekkürler! –

+0

Bu sorunu da görüyorum. Damn :( – runmad

cevap

7

Bu, UISegmentedControl ile ilgili bir hatadır, bence. Kontrol zamanının kendini çizmesine izin vermek için seçilen parçayı gecikmeden sonra ayarlayarak çalışabilirsiniz. setPreferences senin parçalı kontrolün değerini günceller

[self performSelector:@selector(setPreferences) withObject:nil afterDelay:0.0]; 

: Hatta gerçek bir gecikme gibi sadece bir şey kullanmak zorunda değilsiniz.

+0

çok iyi çalıştı.Ama bunun arkasındaki gerçek sebep ne olabilir acaba? – thesummersign

+1

çünkü ilk çalıştırma döngüsünden sonra gerçekleştirilecek (bölümlenmiş kontrol zaten çizilmiş)! Bu hata bilinen bir hata ve iOS 6 –

+0

içinde sabit olduğunu biliyorum bu işten çok teşekkürler.Çok teşekkürler – glasz

İlgili konular