UISlider自定义:如何向自定义旋钮图像正确添加阴影
问题描述:
我需要为UISlider放置带阴影的自定义旋钮图像。到目前为止,我有一个38x38的图像,其中有一个区域定义了旋钮的阴影。UISlider自定义:如何向自定义旋钮图像正确添加阴影
现在而使用该图像,当我旋钮滑动到最末端的实际旋钮是不能够覆盖的端点,因此结束点是根据所述旋钮图像的透明区域可见
这是我使用自定义UISlider
UIImage *slideBtImg = [UIImage imageNamed:SliderKnobImg];
[self.ratingSlider setThumbImage:slideBtImg forState:UIControlStateNormal];
[self.ratingSlider setThumbImage:slideBtImg forState:UIControlStateHighlighted];
如何实现一个自定义旋钮,下方有阴影,正确覆盖终点?
答
看里面UISlider.h
,有一些方法,让您自定义滑块旋钮和轨道根据需要。 (iOS 2.0以上)
// lets a subclass lay out the track and thumb as needed
- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds;
- (CGRect)maximumValueImageRectForBounds:(CGRect)bounds;
- (CGRect)trackRectForBounds:(CGRect)bounds;
- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value;
这是我自己的例子。它需要一些数学工作。我得到当前滑块位置的值比率(从0到1)并调整它以使我的阴影自定义旋钮很好地居中。希望有帮助;)
- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value {
float valueRatio = (value - self.minimumValue)/valueRange;
return CGRectMake(valueRatio * (bounds.size.width - 26) + 3, 7, 20, 20);
}
答
您可以添加一些透明空间到您的图像SliderKnobImg
。保持图像的宽度小于滑块,然后使用[slideBtImg resizableImageWithCapInsets:...]
作为滑块的thumbImage。