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

时间:2017-08-23 13:12:13

标签: ios swift swift3 uiimageview uislider

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

当图像变小时就是这种情况: getting smaller image by UISlider

当图像变大时就是这种情况: getting bigger image by UISlider

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

您需要在图像视图中添加宽度宽高比约束 - 显然还有其他所需的约束 - :

enter image description here

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

enter image description here

接下来,您可以实现以下内容:

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将是您要调整大小的图像视图的宽度约束。

<强>输出:

enter image description here

答案 1 :(得分:1)

使滑块的值范围从.01到1.0(.01应该优于0。)

按住Ctrl键并从滑块拖动到视图控制器中,并在滑块的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
}

应该这样做。

答案 2 :(得分:0)

  1. 根据滑块的值更新帧

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