如何以编程方式在 Swift 中使用 UISlider 更改 UIImageView 中指定的图像大小

How to change specified image size in UIImageView with UISlider in Swift programmatically

我正在尝试使用 UISlider 更改 UIImageView 中指定的图像大小。 滑块的取值范围为 0 ~ 100。 所以我的想法是,如果我将滑块移动得更小,指定的图像就会显示得更小,如果我将滑块移动得更大,图像尺寸就会变大。

图片变小时是这样的: getting smaller image by UISlider

图片变大时是这样的: getting bigger image by UISlider

有人可以帮忙吗?

  1. 根据滑块的值更新帧

  2. 尝试将 UISlider 的值与 UIImageView 的约束相乘

使滑块的值范围从 .01 到 1.0(.01 应该比 0 更好。)

按住 Control 从您的滑块拖动到您的视图控制器中,并在滑块的 valueChanged 事件上创建一个动作。我们称它为 sliderChanged.

在滑块的操作方法中,更改图像视图上的比例:

@IBOutlet myImageView: UIImageView*


@IBAction func sliderChanged(sender: UISlider) {
  let scale = sender.value
  let transform = CGAffineTransform.scale(scaleX: scale, y: scale)
  myImageView.transform = transform
}

应该可以了。

您需要为图像视图添加 宽度纵横比 约束 - 显然还有其他所需的约束 -:

在我的示例中,这些是图像视图的约束:

接下来,您可以执行以下操作:

class ViewController: UIViewController {

    @IBOutlet weak var slider: UISlider!
    @IBOutlet weak var imageViewWidth: NSLayoutConstraint!
    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        slider.maximumValue = 100.0
        slider.value = 0.0
        imageViewWidth.constant = 20
    }

    @IBAction func sliderValueChanged(_ sender: Any) {
        imageViewWidth.constant = CGFloat(20 + slider.value)
    }
}

imageViewWidth IBOutlet 将是您要调整大小的图像视图的宽度约束。

输出: