Nik*_*Nik 12 iphone objective-c uislider ios swift
我有项目必须自定义UISlider元素.我想知道是否有人知道如何改变,或者是否有可能改变UISlide条线的高度.
我尝试过类似的东西但不起作用:
let customBounds = CGRect(origin: bounds.origin,
size: CGSize(width: bounds.size.width, height: 15.0))
feedbackSlider.trackRectForBounds(customBounds)
Run Code Online (Sandbox Code Playgroud)
谢谢
Lea*_*ift 16
我希望你想在故事板中编辑它,只有行大小,在你的自定义UISlider中使用它
class CustomSlide: UISlider {
@IBInspectable var trackHeight: CGFloat = 2
override func trackRectForBounds(bounds: CGRect) -> CGRect {
//set your bounds here
return CGRect(origin: bounds.origin, size: CGSizeMake(bounds.width, trackHeight))
}
}
Run Code Online (Sandbox Code Playgroud)
您可以覆盖自定义滑块中的方法
对于Objective-C
- (CGRect)trackRectForBounds:(CGRect)bounds {
CGRect rect = CGRectMake(0, 0, 100, 30);//change it to any size you want
return rect;
}
Run Code Online (Sandbox Code Playgroud)
对于斯威夫特
override func trackRectForBounds(bounds: CGRect) -> CGRect {
var rect:CGRect = CGRectMake(0, 0, 100, 30)
return rect
}
Run Code Online (Sandbox Code Playgroud)
覆盖trackRect是一种方法,但是如果你正在使用额外UISlider的视图,minimumValueImage, maximumValueImage你也需要考虑它们的绑定,否则它们将与滑块的轨道重叠.作为一种捷径,你可以简单地使用super's func:
固定版本.
Swift 3+
@IBDesignable
class CustomSlider: UISlider {
/// custom slider track height
@IBInspectable var trackHeight: CGFloat = 3
override func trackRect(forBounds bounds: CGRect) -> CGRect {
// Use properly calculated rect
var newRect = super.trackRect(forBounds: bounds)
newRect.size.height = trackHeight
return newRect
}
}
Run Code Online (Sandbox Code Playgroud)
没有拇指图像的Swift 4版本。
class CustomSlider: UISlider {
@IBInspectable var trackHeight: CGFloat = 2
override func trackRect(forBounds bounds: CGRect) -> CGRect {
return CGRect(origin: bounds.origin, size: CGSize(width: bounds.width, height: trackHeight))
}
}
Run Code Online (Sandbox Code Playgroud)
迅捷3
class MySlide: UISlider {
@IBInspectable var height: CGFloat = 2
override func trackRect(forBounds bounds: CGRect) -> CGRect {
return CGRect(origin: bounds.origin, size: CGSize(width: bounds.width, height: height))
}
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*egg -1
如果您正在使用,autolayout则可以height在UISlider中设置约束storyboard。如果您需要在运行时更改它 -IBOutlet为约束创建一个并修改其.constant值。
| 归档时间: |
|
| 查看次数: |
17164 次 |
| 最近记录: |