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

问题描述:

我试图使用UISlider更改UIImageView中的指定图像大小。 滑块的取值范围为0〜100. 所以我的想法是,如果我将滑块移动得更小,指定的图片显示的更小,而且如果我将滑块移动得更大,则图片的尺寸会变大。如何使用UISlider在Swift中以编程方式更改UIImageView中的指定图像大小

这是当图像变得越来越小的情况下: getting smaller image by UISlider

这就是当图像越来越大的情况下: getting bigger image by UISlider

是否有人可以帮忙吗?基于滑块的值

+1

OK,你可以考虑在其滚动型和ImageView的做到这一点,并使用滚动视图的委托方法你为什么不使用滚动视图,而不是图像来实现这一功能 –

+0

? –

+0

你的意思是使用滚动视图,而不是imageview? 我会试试看。 –

使滑块的值范围从.01 1.0(.01应该更好地工作比0 )

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

应该这样做。

+0

哇!大。有用!谢谢,邓肯! –

  1. 更新帧

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

您将需要添加宽度宽高比约束图像视图 - 和明显的其他所需的必要constraints-:

enter image description here

在我的例子,这些都是制约图像视图:

enter image description here

接下来,你可以implemnt的以下:

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

+0

感谢您的回答。这是我想要的。你可以实现编程吗? –

+0

很高兴帮助! “你可以实现编程吗?“我没有得到:)你仍然有任何问题吗? –

+0

这不是通过编程实现的,但它的工作原理,感谢你的努力,艾哈迈德。 –