【问题标题】:How to change specified image size in UIImageView with UISlider in Swift programmatically如何以编程方式在 Swift 中使用 UISlider 在 UIImageView 中更改指定的图像大小
【发布时间】:2018-02-01 02:31:24
【问题描述】:

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

图像变小时会出现这种情况: getting smaller image by UISlider

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

有人可以帮忙吗?

【问题讨论】:

  • 好的,您可以在其中获取滚动视图和图像视图并使用滚动视图委托方法来实现此功能
  • 为什么不使用滚动视图而不是图像?
  • 你的意思是使用滚动视图而不是图像视图?我试试看。

标签: ios swift swift3 uiimageview uislider


【解决方案1】:
  1. 根据滑块的值更新帧

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

【讨论】:

    【解决方案2】:

    使滑块的值范围从 0.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
    }
    

    应该可以的。

    【讨论】:

      【解决方案3】:

      您需要将 WidthAspect Ratio 约束添加到您的图像视图 - 显然还有其他所需的约束 - :

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

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

      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)
          }
      }
      

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

      输出:

      【讨论】:

      • 感谢您的回答。这就是我想要的。你能以编程方式实现吗?
      • 很高兴为您提供帮助! “你能以编程方式实现吗?”我不明白:) 你还有什么问题吗?
      • 这不是通过编程实现的,但是它可以工作,感谢你的努力,艾哈迈德。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2016-04-25
      相关资源
      最近更新 更多