ios - UISlider 的 minView 超出了它的边界和拇指的中心

标签 ios swift uiview nslayoutconstraint uislider

我想要一个自定义 slider ,要求是 minView 的高度应为 8 pt,maxView 的高度应为 4 pt,可见的角应为圆角。

我将 slider 的最小和最大图像指定为 alpha 的清晰图像为 0.0

对于 maxView,我创建了一个 UIView 并将其宽度设置为等于 slider 的宽度,并使其角变圆。

对于 minView,我创建了一个 UIView,它的前导等于 slider 的前导,尾随应等于拇指的中心。

enter image description here

这是我所做的逻辑。

func changeValue() {
    let difference = slider.maximumValue - slider.minimumValue
    let thumbWidth = CGFloat(44/2)
    let scale = (slider.frame.size.width-thumbWidth)/CGFloat(difference)
    let width = scale * CGFloat(slider.value)
    minSlideWidth.constant = width
    self.view.layoutIfNeeded()
}

但是 minView 的宽度不会以拇指中心为中心增加或减少。如果您看到图像,它已经越过了 UIslider 的拇指。

enter image description here

最佳答案

这种方法怎么样?

配置 UISlide control 的属性.

  1. setMinimumTrackImage,带有 8pt 图像。
  2. setMaximumTrackImage,带有 4pt 图像。

轨道图像可以通过 stretchable image 重新创建为了保持圆角。您可以在 UIImage reference定义可拉伸(stretch)图像部分中找到它。 。对于滑动条的跟踪图像非常有用。

关于ios - UISlider 的 minView 超出了它的边界和拇指的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52772287/

相关文章:

ios:NSLocale/分组分隔符 - 烦人的警告

ios - 触摸并按住 SpriteKit SKSpriteNode 速度

ios - Branch.IO showShareSheet 不生成 ShortUrl

ios - Swift 推送通知委托(delegate) Debug模式行为

iphone - 从使用 Storyboard 部署的 webView 返回主视图

ios - 核心数据 : annotation: Failed to load optimized model at path 'Users/~/GoogleMaps.bundle/GMSCacheStorage.momd/StorageWithTileProto.omo'

ios - 为现在在后台播放音频设置标题和图像

swift - 自定义类不在中心绘制 - Swift

objective-c - 有没有办法获得 UIView TouchBegan 更精确的计时数据?

ios - 将 Objective-C 桥接到 Swift 项目