如何在 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 值作为变量来设置旋转速度
当我改变它的框架时,UISlider 没有改变它的宽度 - ios Swift