使UISlider的高度更大?

我一直在寻找一种方法来使UISlider进度条更高,也就是增加高度。 但是,我还没有成功。 我不想使用自定义图像或任何东西,只是使它更高,所以UISlider看起来不那么薄。 我错过了超级明显的东西吗?

在某些情况下,接受的答案会minimumValueImage改变滑块的宽度,就像如果你使用的是minimumValueImagemaximumValueImage 。 如果您只想改变高度并将所有其他东西单独留下,请使用以下代码:

 override func trackRect(forBounds bounds: CGRect) -> CGRect { var newBounds = super.trackRect(forBounds: bounds) newBounds.size.height = 12 return newBounds } 

对于那些希望看到一些改变轨道大小的工作代码。

 class CustomUISlider : UISlider { override func trackRect(forBounds bounds: CGRect) -> CGRect { //keeps original origin and width, changes height, you get the idea let customBounds = CGRect(origin: bounds.origin, size: CGSize(width: bounds.size.width, height: 5.0)) super.trackRect(forBounds: customBounds) return customBounds } //while we are here, why not change the image here as well? (bonus material) override func awakeFromNib() { self.setThumbImage(UIImage(named: "customThumb"), for: .normal) super.awakeFromNib() } } 

剩下的只是改变故事板内的类:

storyboardstuff

除非你想添加更多的自定义的东西到你的滑块,你可以继续使用你的seekbar动作和出口的对象typesUISlider。

我find了我正在寻找的东西。 下面的方法只需要在一个子类中编辑。

 - (CGRect)trackRectForBounds:(CGRect)bounds{ CGRect customBounds = ... return customBounds; } 

这是我最近的快速实施,build立在CularBytes的…

 open class CustomSlider : UISlider { @IBInspectable open var trackWidth:CGFloat = 2 { didSet {setNeedsDisplay()} } override open func trackRect(forBounds bounds: CGRect) -> CGRect { let defaultBounds = super.trackRect(forBounds: bounds) return CGRect( x: defaultBounds.origin.x, y: defaultBounds.origin.y + defaultBounds.size.height/2 - trackWidth/2, width: defaultBounds.size.width, height: trackWidth ) } } 

通过设置自定义类,在故事板中的UISlider上使用它 自定义班级设置

IBInspectable允许您从故事板中设置高度 从故事板的高度

你可以玩这个,看看会发生什么:

 slider.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 2.0);