自定义 UISlider(跟踪图像高度)
Posted
技术标签:
【中文标题】自定义 UISlider(跟踪图像高度)【英文标题】:Customize UISlider (track image height) 【发布时间】:2011-11-04 22:36:34 【问题描述】:我正在自定义 UISlider
。我可以设置一个高于通常拇指的自定义拇指图像,但是在设置更高的最小轨道图像时我无法使轨道更高,但轨道高度保持不变。
应该有可能,因为在 iPad 上的 iPod/Music App 中,音量滑块也比通常的滑块更高,您可以在此处看到:
(来源:cocoia.com)
【问题讨论】:
【参考方案1】:您需要将滑块子类化并覆盖trackRectForBounds:
方法,如下所示:
- (CGRect)trackRectForBounds:(CGRect)bounds
return bounds;
【讨论】:
【参考方案2】:Swift 最简单的解决方案:
class TBSlider: UISlider
override func trackRectForBounds(bounds: CGRect) -> CGRect
return CGRectMake(0, 0, bounds.size.width, 4)
【讨论】:
【参考方案3】:对于那些希望看到一些更改轨道大小的工作代码的人。
class CustomUISlider : UISlider
override func trackRectForBounds(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.trackRectForBounds(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"), forState: .Normal)
super.awakeFromNib()
唯一剩下的就是改变故事板中的类:
您可以继续使用您的搜索栏操作和出口到对象类型 UISlider,除非您想向滑块添加更多自定义内容。
【讨论】:
【参考方案4】:使用下一个方法setThumbImage、setMinimumTrackImage、setMaximumTrackImage
[self setThumbImage:[UIImage imageNamed:@"switchThumb.png"] forState:UIControlStateNormal];
[self setMinimumTrackImage:[UIImage imageNamed:@"switchBlueBg.png"] forState:UIControlStateNormal];
[self setMaximumTrackImage:[UIImage imageNamed:@"switchOffPlain.png"] forState:UIControlStateNormal];
并像这样创建子类
- (id) initWithFrame: (CGRect)rect
if ((self=[super initWithFrame:CGRectMake(rect.origin.x,rect.origin.y,90,27)]))
[self awakeFromNib];
return self;
【讨论】:
奇怪,可能我不明白你想要什么? 再一次,在这里不起作用。我猜提供的代码只是ios5? (我用的是iOS4,有一些UISlider只有iOS5)【参考方案5】://use this code
UIImage *volumeLeftTrackImage = [[UIImage imageNamed: @"video_payer_scroll_selection.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
UIImage *volumeRightTrackImage= [[UIImage imageNamed: @"video_bar_bg.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
[volumeslider setMinimumTrackImage: volumeLeftTrackImage forState: UIControlStateNormal];
[volumeslider setMaximumTrackImage: volumeRightTrackImage forState: UIControlStateNormal];
[volumeslider setThumbImage:[UIImage imageNamed:@"sound_bar_btn.png"] forState:UIControlStateNormal];
[tempview addSubview:volumeslider];
【讨论】:
以上是关于自定义 UISlider(跟踪图像高度)的主要内容,如果未能解决你的问题,请参考以下文章