如何增加 UISlider 的最大轨道的大小?
Posted
技术标签:
【中文标题】如何增加 UISlider 的最大轨道的大小?【英文标题】:How to increase the size of the max track of a UISlider? 【发布时间】:2014-08-10 15:51:44 【问题描述】:我想添加一个尺寸从最小值到最大值不同的 UISlider。 这是我需要的示例:
我尝试过使用一些方法,例如:
- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds;
- (CGRect)maximumValueImageRectForBounds:(CGRect)bounds;
- (CGRect)trackRectForBounds:(CGRect)bounds;
- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value;
但我无法让它工作...... 关于您如何实现这一目标的任何建议或链接?
【问题讨论】:
trackRectForBounds
就是这样。你为什么不给我们看一些代码?
没有什么能正常工作,我认为它不会有帮助...
【参考方案1】:
你需要继承 UISlider。如果您在运行时创建 UISlider,则应使用 initWithFrame
否则使用 initWithCoder
。
@implementation slider
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
// Initialization code
return self;
- (instancetype)initWithCoder:(NSCoder *)coder
self = [super initWithCoder:coder];
if (self)
// At certain point images swap, that is why you need images fit to your UISlider size.
UIImage *sliderLeftImg = [[UIImage imageNamed: @"slider2"] stretchableImageWithLeftCapWidth: 10 topCapHeight: 0];
UIImage *sliderRightImg = [[UIImage imageNamed: @"slider"] stretchableImageWithLeftCapWidth: 10 topCapHeight: 0];
[self setMinimumTrackImage: sliderLeftImg forState: UIControlStateNormal];
[self setMaximumTrackImage: sliderRightImg forState: UIControlStateNormal];
return self;
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
// Drawing code
*/
@end
我绘制的示例图像草率,您需要更好的。
UISlider Class Reference
最终结果:
【讨论】:
天哪,不可能这么简单......你的图像“slider”和“slider2”是什么样的?是不是上面这两个最终结果? @kl94 两张图片(滑块和滑块2)都附加到帖子中。 我认为 stretchableImageWithLeftCapWidth 行不通。谢谢。 可以肯定的是,您知道为什么它不适用于 IB 吗? (不使用 stretchableImageWithLeftCapWidth: 的事件)。设置 -[setMinimumTrackImage:] 和 -[setMaximumTrackImage:] “以编程方式”完成了这项工作。但在 IB 上,它似乎不起作用。你有什么想法吗? 我创建了 UISlider 的子类,添加了我在帖子中编写的代码,然后将 UISlider 放在 UIViewController 上,然后在 IB / Identity Inspector / Custom class / Class 上选择它并输入我的自定义那里的班级名称。就是这样。以上是关于如何增加 UISlider 的最大轨道的大小?的主要内容,如果未能解决你的问题,请参考以下文章
当滑块按钮超过最大值的 60% 时,UISlider 最大轨道图像使用最小轨道图像