【问题标题】:Swift: How can I change the size of Thumb Image on UISlider based of the value of the slider?Swift:如何根据滑块的值更改 UISlider 上的拇指图像的大小?
【发布时间】:2015-07-17 06:22:11
【问题描述】:

我在 Swift 中没有找到答案。

我有一个 UISlider,它可以更改我正在制作的绘图应用程序的画笔大小的值。我希望拇指图像的大小根据滑块拇指位置的值进行更新。

以下是某些上下文的滑块屏幕截图:

我在 viewDidLoad() 中设置了拇指的初始图像

self.brushSizeSlider.setThumbImage(UIImage(named: "black"), forState: UIControlState.Normal)

并为滑块设置一个 IBAction,如下所示:

    @IBAction func brushSizeSliderChanged(sender: UISlider) {
    if sender == brushSizeSlider {
        self.brushWidth = CGFloat(sender.value)
        println("the size of the brush is: \(self.brushWidth)")
    }
}

我应该添加什么到brushSizeSliderChanged 以根据brushSizeSliders 拇指位置/值的值更改其拇指图像的大小?

【问题讨论】:

  • 您必须使用适当大小的图像更新滑块的拇指图像。
  • 怎么样?您是在问如何生成合适尺寸的图像?
  • 如何生成合适尺寸的图像?适当的大小是滑块的值。
  • 正如 rmaddy 所说,您必须不断地创建一个新的拇指图像,并在它绘制时将其安装在滑块中。这将是很多开销,并且可能太慢而无法跟上。我很想创建自己的自定义控件,该控件的作用类似于滑块,但使用 CAShapeLayer 绘制拇指。滑块没那么复杂。
  • 有一个(最近的)关于如何对滑块进行子类化以制作自定义滑块栏的答案。不记得确切的线程。

标签: ios swift uislider


【解决方案1】:
var ratio : CGFloat = CGFloat ( sender.value + 0.5)
var thumbImage : UIImage = UIImage(named: "yourImage")!
var size = CGSizeMake( thumbImage.size.width * ratio, thumbImage.size.height * ratio )
self.setThumbImage( self.imageWithImage(thumbImage, scaledToSize: size), forState: UIControlState.Normal )

将此代码添加到您的操作方法中

【讨论】:

  • func imageWithImage(image:UIImage, scaledToSize newSize:CGSize) -> UIImage{ UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0); image.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height)) 让 newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2019-11-13
相关资源
最近更新 更多