iOS Swift - UISlider - 添加第二个轨迹栏
Posted
技术标签:
【中文标题】iOS Swift - UISlider - 添加第二个轨迹栏【英文标题】:iOS Swift - UISlider - Add a second track bar 【发布时间】:2021-06-19 17:12:06 【问题描述】:我正在尝试自定义我的子类 UISlider 以在可拖动拇指下方添加第二个轨迹栏。这里的想法是让这个新轨道代表“平均评级”,用户使用现有的拇指和轨道来设置他们自己的评级。我尝试插入一个自定义层,但它要么位于整个滑块的后面,要么位于整个滑块的顶部,包括可拖动的拇指。任何有关此事的帮助/见解将不胜感激。提前致谢。
这是我想要实现的目标的图像。蓝条我想成为这个添加的轨道,代表“平均评分”:
【问题讨论】:
从头开始构建自己的 UIControl,而不是使用 UISlider。 【参考方案1】:不要调用addSublayer()
,而是尝试使用insertSublayer(_: at:)。这将使您可以完全控制要在层层次结构中插入average rating layer
实例的确切位置。
更新
尝试检查self.layer.sublayers
的UISlider
实例。如果您可以轻松识别thumbLayer
(比如基于bounds.size
或任何独特的东西)。然后你可以尝试插入你的图层
-
在拇指下方使用insertSublayer(_: below:)
使用insertSublayer(_: above:)在进度轨道上方(以防你能识别它)
【讨论】:
我实际上正在使用 insertSublayer(检查后)。如果我在 0 处插入,它将把它放在整个滑块的后面,如果我在 1 处插入,它把它放在整个滑块的前面(包括跟踪拇指)。我认为这是因为整个 UISlider 被表示为单层 查看更新以了解另一种可能的解决方法。 也检查过了 - 我只看到一个子层:/ 如果你在View Hierarchy Debugger
中检查这个,UISlider
有多少个子视图?以上是关于iOS Swift - UISlider - 添加第二个轨迹栏的主要内容,如果未能解决你的问题,请参考以下文章
当我改变它的框架时,UISlider 没有改变它的宽度 - ios Swift