我正在尝试制作一个具有胖轨道的 UISlider。我试过这个,它几乎可以工作。但是,当UISlider第一次显示时,track bar是正常的。只有当它得到一个触摸事件时,它才会变得更厚。
这是我添加到 UISlider 子类中的代码,建议如下:
- (CGRect)trackRectForBounds:(CGRect)bounds
{
return bounds;
}
我不明白这是如何工作的,所以我无法弄清楚为什么它不能完美地工作。以下是我的问题:
- 这是如何运作的?
- 我怎样才能控制它使轨道有多厚?
- 首次绘制 UISlider 时,如何使其影响轨道?
当然,第三个问题是最重要的,尽管其他问题会帮助我理解。
要考虑的另一件事:当它第一次显示时,我隐藏了拇指:
[slider setThumbImage:[[UIImage alloc] init] forState:UIControlStateNormal];
当用户触摸滑块时,我会像这样显示拇指:
[slider setThumbImage:nil forState:UIControlStateNormal];
我提到这一点是因为我想知道这是否会以某种方式干扰 trackRectForBounds 魔法。
谢谢!