Bob*_*Bob 6 cocoa-touch objective-c uikit uislider ios
我正在尝试制作一个有着厚重音轨的UISlider.我试过这个,它几乎可以工作.但是,首次显示UISlider时,轨迹栏是正常的.只有当它获得触摸事件时才会变得更厚.
这是我添加到我的UISlider子类中的代码,如下所示:
- (CGRect)trackRectForBounds:(CGRect)bounds
{
return bounds;
}
Run Code Online (Sandbox Code Playgroud)
我不明白这是如何工作的,所以我无法弄清楚它为什么不能完美运作.这是我的问题:
当然,第三个问题是最重要的,尽管其他问题会帮助我理解.
还有一件事要考虑:首次显示时,我隐藏了拇指:
[slider setThumbImage:[[UIImage alloc] init] forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
当用户触摸滑块时,我会像这样显示拇指:
[slider setThumbImage:nil forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
我提到这个是因为我想知道这是否会以某种方式干扰trackRectForBounds魔术.
谢谢!
问题1. 来自文档:
如果要自定义轨道矩形,可以重写此方法并返回不同的矩形。返回的矩形用于在绘制过程中缩放轨迹和缩略图图像。
此方法的默认实现返回一个比它传递的矩形更小的矩形。你的只是返回它所传递的内容,而不是先缩小它。
问题2. 返回一个更大或更小的CGRect,例如:
return CGRectMake(0, 0, 500, 200);
Run Code Online (Sandbox Code Playgroud)
问题3。 我认为只有在没有设置自定义图像的情况下才会调用该方法,这就是为什么在将图像设置为 之前它没有效果的原因nil。如果您想覆盖图像,请尝试使用看起来像您想要的方式的实际图像覆盖滑块图像。
| 归档时间: |
|
| 查看次数: |
5354 次 |
| 最近记录: |