【问题标题】:How to change image in UIImageView with UISlider in Swift如何在 Swift 中使用 UISlider 更改 UIImageView 中的图像
【发布时间】: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 的错误。

标签: ios swift swift3 uislider


【解决方案1】:
  1. 创建一个文件名数组。

  2. 将滑块值转换为 int。

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

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

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

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

【讨论】:

    【解决方案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 不是最好的解决方案,因为您忽略了任何非整数值,不是吗?因此,如果用户跳过期望值,图像将保持不变。
      猜你喜欢
      • 2018-02-01
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      相关资源
      最近更新 更多