【问题标题】:Custom UISlider using UIEdgedInset does not render well使用 UIEdgedInset 的自定义 UISlider 渲染效果不佳
【发布时间】:2017-03-31 11:52:29
【问题描述】:

我正在尝试使用图像进行自定义 uislider(没有可见旋钮,当用户无法编辑时将其隐藏并在可以时显示它)问题是侧面渲染完美,但右侧部分是可爱,似乎不使用边缘...... 知道如何编辑它吗?

实际代码:

    let capLeft:CGFloat =  9
    let capRight:CGFloat = 9
    imageMin = imageMinimum?.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: capLeft, bottom: 0, right: capRight), resizingMode: .stretch)
    imageMax = imageMaximum
    slider.setMaximumTrackImage(imageMax, for: UIControlState())
    slider.setMinimumTrackImage(imageMin, for: UIControlState())

它是如何渲染的:

它应该如何渲染:

最小轨道图像:

最大跟踪图像:

你有什么想法吗?

【问题讨论】:

  • 请不要在意颜色,重要的是形状
  • 嗯...你有缩略图吗?而且,如果滑块值设置为 100%,全长图像看起来是否正确?
  • 100% 看起来不太好。而且我经常用大拇指盖住盖子,所以我不能用它来隐藏)
  • 移除调整大小模式。试试这个 imageMinimum?.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: capLeft, bottom: 0, right: capRight))
  • jignesh-vadadoriya : 完全一样(resizingMode: .stretch 是默认值)

标签: ios swift uislider uiedgeinsets


【解决方案1】:

我认为UISlider 的最小和最大图像有点混淆。

Min 图像在 Thumb 的左侧绘制(并拉伸)。 Max 图像在 Thumb 的右侧绘制(并拉伸)。

创建一个小的方形纯红色图像 - 例如 16x16 - 并将其(不带插图)分配给 .setMaximumTrackImage。从低值到高值,看看最终结果如何。

编辑:对于这个例子,我在 Min 图像上使用了 NO insets...

注意:我在这些大写字母中使用了 20x20 的清晰图像。

【讨论】:

  • 这是我一直在讨论的问题之一,我会将灰色与黑色分开,但这并不能解释为什么边缘会被“切割”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 2019-07-06
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 2011-12-08
  • 2018-06-21
相关资源
最近更新 更多