2012-04-25 78 views
2

我正在創建(或嘗試)自定義UISlider外觀,仍然水平但高得多。我有兩個問題。UISlider自定義圖像和拇指高度?

1.這是我用來將圖像放到滑塊上的代碼。

UIImage *minImage = [UIImage imageNamed:@"sliderMin.png"]; 
UIImage *maxImage = [UIImage imageNamed:@"sliderMax.png"]; 
UIImage *thumbImage = [UIImage imageNamed:@"sliderThumb.png"]; 

minImage = [minImage stretchableImageWithLeftCapWidth:33.0 topCapHeight:0.0]; 
maxImage = [maxImage stretchableImageWithLeftCapWidth:33.0 topCapHeight:0.0]; 
// thumbImage = [minImage stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0]; 

[_contrastSlider setMinimumTrackImage:minImage forState:UIControlStateNormal]; 
[_contrastSlider setMaximumTrackImage:maxImage forState:UIControlStateNormal]; 
[_contrastSlider setThumbImage:thumbImage forState:UIControlStateNormal]; 

minImage = nil; 
maxImage = nil; 
thumbImage = nil; 

[_contrastSlider setMinimumValue:0.0]; 
[_contrastSlider setMaximumValue:100.00]; 
[_contrastSlider setValue:25.0]; 

我有三個圖像,最小,最大和拇指。這些是圖像以及它們在設備上的外觀,這是不正確的。

我還沒有發佈圖片,這裏顯示的是一個link to MYSlider.jpeg,展示中的元器件。

滑塊應該是拇指右邊的奶油色,左邊是粉紅色。但是這沒有發生。

這就是問題1.問題2是拇指大小默認太小。我使用這個:UISlider Height Hack試圖增加拇指的高度,但令人遺憾的是它使得它更寬而不是更高。所以我在尋求幫助,使這個區域更高,而不是更寬,並且想知道爲什麼我的粉色圖像被忽略?

謝謝你的幫助。

如果有幫助,這是我的UISlider子.M:

-(BOOL) pointInside:(CGPoint)point withEvent:(UIEvent*)event { 
CGRect bounds = self.bounds; 
bounds = CGRectInset(bounds, -10, -8); 
return CGRectContainsPoint(bounds, point); 

}

-(BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { 
    CGRect bounds = self.bounds; 
    float thumbPercent = (self.value - self.minimumValue)/(self.maximumValue - self.minimumValue); 
    float thumbPos = THUMB_SIZE + (thumbPercent * (bounds.size.width - (2 * THUMB_SIZE))); 
    CGPoint touchPoint = [touch locationInView:self]; 
    return (touchPoint.x >= (thumbPos - EFFECTIVE_THUMB_SIZE) && touchPoint.x <= (thumbPos + EFFECTIVE_THUMB_SIZE)); 
} 

謝謝。

+0

指向組件圖像的鏈接已損壞 – Asahi 2014-07-29 09:06:23

回答

0

事實證明,在view did方法導致問題的視圖中設置我的滑塊值。我在Interface Builder中設置了它們,並修復了這個問題。一旦在IB中設置,如果需要沒有問題,我可以在代碼中調整它們。

至於我的其他問題,我想知道如果這是因爲我沒有在實際設備上測試,所以我會暫停這個問題,直到我在幾個星期內把它放到設備上。

+0

我現在正在對設備進行測試,觸摸區域是原始滑塊高度的問題仍然存在,所以我需要解決該問題。但是,這不是一個主要問題,因爲無論如何你自然會觸摸滑塊的中間部分。 – mrEmpty 2012-05-04 10:54:25

+0

你是如何解決這個問題的? @mrEmpty – jonypz 2013-07-02 18:42:47

+0

我沒有,但是當我測試用戶時,它從來沒有被提出過。 – mrEmpty 2013-07-02 20:24:53