首次显示时如何使 UISlider 变粗?
Posted
技术标签:
【中文标题】首次显示时如何使 UISlider 变粗?【英文标题】:How to make UISlider thicker when it is first displayed? 【发布时间】:2013-03-15 23:23:14 【问题描述】:我正在尝试制作一个具有胖轨道的 UISlider。我试过this,它几乎可以工作。但是,当UISlider第一次显示时,track bar是正常的。只有当它得到一个触摸事件时,它才会变厚。
这是我添加到 UISlider 子类中的代码,建议如下:
- (CGRect)trackRectForBounds:(CGRect)bounds
return bounds;
我不明白它是如何工作的,所以我无法弄清楚为什么它不能完美地工作。以下是我的问题:
-
这是如何工作的?
如何控制轨道的厚度?
如何让它在 UISlider 首次绘制时影响轨道?
当然,第三个问题是最重要的,尽管其他问题会帮助我理解。
要考虑的另一件事:当它第一次显示时,我隐藏了拇指:
[slider setThumbImage:[[UIImage alloc] init] forState:UIControlStateNormal];
当用户触摸滑块时,我会这样显示拇指:
[slider setThumbImage:nil forState:UIControlStateNormal];
我提到这一点是因为我想知道这是否会以某种方式干扰 trackRectForBounds 魔法。
谢谢!
【问题讨论】:
【参考方案1】:问题1。来自the docs:
如果你想自定义轨道矩形,你可以覆盖这个 方法并返回一个不同的矩形。返回的矩形是 用于在绘制过程中缩放轨道和拇指图像。
此方法的默认实现返回一个比它传递的矩形更小的矩形。你的只是返回它传递的内容,而不是先缩小它。
问题2。返回一个更大或更小的CGRect,例如:
return CGRectMake(0, 0, 500, 200);
问题 3。 我认为只有在您不设置自定义图像时才会调用该方法,这就是为什么在您将图像设置为 nil
之前它不起作用的原因。如果您想覆盖图像,请尝试使用看起来像您想要的方式的实际图像覆盖滑块图像。
【讨论】:
美丽 - 很好的答案。不知道您是如何知道问题 1 中的“默认实现”的,但这说明了一切 - 谢谢! 典型的 *** 响应。以上是关于首次显示时如何使 UISlider 变粗?的主要内容,如果未能解决你的问题,请参考以下文章
带有视觉跟踪弹出视图的 UISlider。隐藏在其他视图元素后面的弹出窗口