自定义UISlider(轨迹图像高度)

use*_*128 12 iphone cocoa-touch uislider ios

我正在定制一个UISlider.我可以设置一个高于通常拇指的自定义拇指图像,但是当设置更高的最小轨迹图像但轨道高度保持不变时,我无法使轨道更高.应该可以像在iPad上的iPod /音乐应用程序中一样,音量滑块也可以像通常的滑块一样高,如下所示:

http://blog.cocoia.com/wp-content/uploads/2010/01/Lol-wut.png

ant*_*kes 24

您需要子类化滑块并覆盖trackRectForBounds:方法,如下所示:

- (CGRect)trackRectForBounds:(CGRect)bounds
{
    return bounds;
}
Run Code Online (Sandbox Code Playgroud)


Bar*_*zyk 6

Swift最简单的解决方案:

class TBSlider: UISlider {

    override func trackRectForBounds(bounds: CGRect) -> CGRect {
        return CGRectMake(0, 0, bounds.size.width, 4)
    }
}
Run Code Online (Sandbox Code Playgroud)


SAK*_*isT 2

使用接下来的方法setThumbImagesetMinimumTrackImagesetMaximumTrackImage

[self setThumbImage:[UIImage imageNamed:@"switchThumb.png"] forState:UIControlStateNormal];
    [self setMinimumTrackImage:[UIImage imageNamed:@"switchBlueBg.png"] forState:UIControlStateNormal];
    [self setMaximumTrackImage:[UIImage imageNamed:@"switchOffPlain.png"] forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

并像这样创建子类

- (id) initWithFrame: (CGRect)rect{
    if ((self=[super initWithFrame:CGRectMake(rect.origin.x,rect.origin.y,90,27)])){
        [self awakeFromNib];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)