2013-03-15 13 views
6

Yağ izi olan bir UISlider yapmaya çalışıyorum. this'u denedim ve neredeyse işe yarıyor. Bununla birlikte, UISlider ilk görüntülendiğinde, izleme çubuğu normaldir. Sadece bir dokunma olayı olduğunda, daha kalın olur.İlk görüntülendiğinde UISlider nasıl daha kalın yapılır?

- (CGRect)trackRectForBounds:(CGRect)bounds 
{ 
    return bounds; 
} 

Bunun nasıl çalıştığını anlamıyorum, bu yüzden mükemmel çalışmıyor neden çözemiyorum: Burada

önerildiği gibi ben UISlider benim alt sınıfa ilave koddur. İşte benim sorularım:

  1. Bu nasıl çalışır?
  2. Parkurun ne kadar kalın olduğunu nasıl kontrol edebilirim?
  3. UISlider ilk çizildiğinde parçayı nasıl etkileyebilirim?

Elbette, üçüncü soru en önemlisidir, ancak diğerleri benim anlayışımda bana yardımcı olacaktır.

bir diğer şey düşünün:

kullanıcı sürgüsünü dokunur
[slider setThumbImage:[[UIImage alloc] init] forState:UIControlStateNormal]; 

, böyle başparmak görüntüler:

[slider setThumbImage:nil forState:UIControlStateNormal]; 

I ilk görüntülendiğinde, ben başparmak gizlemek Bunu söylemek çünkü bu bir şekilde trackRectForBounds büyüsüne müdahale edip etmediğini merak ediyorum.

Teşekkürler!

cevap

4

Soru the docs 1.: Eğer parça dikdörtgen özelleştirmek istiyorsanız

, bu yöntemi geçersiz ve farklı bir dikdörtgen döndürebilir. Döndürülen dikdörtgen, çizim sırasında parça ve başparmak görüntülerini ölçeklemek için kullanılan 'dur.

Bu yöntemin varsayılan uygulaması, geçirilen olandan daha küçük bir dikdörtgen döndürür. Seninki, ilk önce küçülmek yerine, geçtiğini geri döndürüyor.

Soru daha büyük veya daha küçük CGRect örneğin Dönüş 2.:

return CGRectMake(0, 0, 500, 200); 

Soru 3. özel bir görüntü ayarlamak yoksa sadece çağrılan yöntemi olduğunu ben düşünüyorum görüntüyü nil olarak ayarlayana kadar neden hiçbir etkisi olmaz. Resmi geçersiz kılmak istiyorsanız, kaydırıcı görüntülerini istediğiniz gibi görünen gerçek görüntülerle geçersiz kılmayı deneyin.

+2

Güzel - harika cevaplar. 1. sorudaki "varsayılan uygulama" hakkında nasıl bildiğinizi bilmiyorum, ama bu her şeyi açıklıyor - teşekkürler! – Bob

+0

Tipik yığın ayırma yanıtı. – benjaminhallock

+0

@benjaminhallock Cevabımın nesi var? –

İlgili konular