我一直在寻找一种让UISlider
进度条更高的方法,即增加高度。但是,我没有取得任何成功。我不想使用自定义图像或任何东西,只是让它更高,所以UISlider
看起来不那么薄。我错过了一些非常明显的东西吗
答案 0 :(得分:52)
在某些情况下,接受的答案会不合需要地改变滑块的宽度,例如,如果您使用minimumValueImage
和maximumValueImage
。如果您只想更改高度并保留其他所有内容,请使用以下代码:
override func trackRect(forBounds bounds: CGRect) -> CGRect {
var newBounds = super.trackRect(forBounds: bounds)
newBounds.size.height = 12
return newBounds
}
答案 1 :(得分:29)
这是我最近的实施,以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
)
}
}
答案 2 :(得分:18)
对于那些希望看到一些改变音轨大小的工作代码的人。
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()
}
}
唯一剩下的就是更改故事板中的类:
除非您想在滑块上添加更多自定义内容,否则您可以继续使用搜索栏操作和插座来添加对象类型UISlider。
答案 3 :(得分:13)
我找到了我要找的东西。以下方法只需要在子类中进行编辑。
- (CGRect)trackRectForBounds:(CGRect)bounds{
CGRect customBounds = ...
return customBounds;
}
答案 4 :(得分:-1)
你可以玩这个,看看会发生什么:
slider.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 2.0);