UISlider自定义图像和拇指高度?

问题描述:

我正在创建(或尝试)自定义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

事实证明,在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