如何在 Swift 中使用 UISlider 更改 UIImageView 中的图像

Posted

技术标签:

【中文标题】如何在 Swift 中使用 UISlider 更改 UIImageView 中的图像【英文标题】:How to change image in UIImageView with UISlider in Swift 【发布时间】:2017-02-16 13:53:36 【问题描述】:

我正在尝试使用 UISlider 更改 UIImageView 中的图像 所以想法是,如果滑块值为 1,则显示某个图像,如果为 2,则显示不同的图像。等等

有人可以帮忙吗?

编辑:这是我尝试过的代码。我认为它应该是一个 If/Else 语句,但我不确定如何形成语法。

@IBOutlet weak var scaleLabel: UILabel!
@IBOutlet weak var scaleSlider: UISlider!
@IBOutlet weak var scaleImage: UIImageView!



@IBAction func valueChanged1(sender: AnyObject) 

    if scaleSlider.value == 1 
        scaleImage.image = "Image.png"
    


【问题讨论】:

显示你尝试过的代码 我编辑了我的帖子。我真的不确定从这里去哪里。 滑块的最小值和最大值是多少 那么问题出在哪里?斯威夫特语法?图像位(您正在尝试将字符串分配给 UIImage)?还有什么? 最小值为 0,最大值为 10。@Anbu,是的,它给了我将字符串分配给 UIImage 的错误。 【参考方案1】:

    创建一个文件名数组。

    将滑块值转换为 int。

    使用该 int 来索引文件名数组。

    使用image(named:) 加载具有该名称的图像。

    将图像安装到您的图像视图中。

看看您是否可以将这些步骤转换为代码。如果不编辑您的问题以显示您的代码并告诉我们发生了什么,我们将向您展示如何调试它。

【讨论】:

【参考方案2】:

由于滑块有一个浮点值,并且您需要一个整数值来从数组中选择图像,我假设您希望使用最接近的整数索引作为滑块的当前值:

let images = [
    UIImage(named: "image1"),
    UIImage(named: "image2"),
    UIImage(named: "image3")
]

var currentIndex = 0 
    didSet 
        if oldValue != currentIndex 
            currentIndexUpdated()
        
    


@IBAction func valueChanged(_ sender: UISlider) 
    currentIndex = Int(round(sender.value))


func currentIndexUpdated() 
    guard 0..<images.count ~= currentIndex else  return 
    imageView.image = images[currentIndex]

【讨论】:

【参考方案3】:

喜欢

@IBAction func valueChanged1(_ sender: UISlider) 

 var imageName : String = "Image.png"

 switch (sender.value)

  case 0:
    print("zero")
  imageName = "yyyy.png"

  case 1:
    print("one")
  imageName = "zzzz.png"
  case 2:
    print("two")
   imageName = "aaaa.png"

  default:
    print("Integer out of range")
 

  if let image = UIImage(named:imageName) 
    scaleImage.image = image
   


【讨论】:

@Anbu.Karthnik 不是最好的解决方案,因为您忽略了任何非整数值,不是吗?因此,如果用户跳过期望值,图像将保持不变。

以上是关于如何在 Swift 中使用 UISlider 更改 UIImageView 中的图像的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 UISlider 以编程方式更改 UILabel

在 Swift 中:如何使用 uislider 值作为变量来设置旋转速度

如何在 Swift 中为 UISlider 的值添加百分号

当我改变它的框架时,UISlider 没有改变它的宽度 - ios Swift

如何在使用 UISlider 更改音量时隐藏 Iphone 音量框?

如何在 Swift 中自定义 UISlider 值