繁体   English   中英

slider 只增加 imageview 大小不减少大小

[英]slider only increasing imageview size not decreasing size

下面我的 swift 代码代码使用 slider 来增加 imageview 的大小。 我想做的是当 slider 从小于 0.5 移动时 imageview 变小。 如果 slider 的值等于或大于 0.5,则图像视图的大小会增加。 现在 slider 值设置为 0.5

import UIKit

class ViewController: UIViewController {



    var image1Width2: NSLayoutConstraint!
    var image1Height2: NSLayoutConstraint!

    var slider = UISlider()
    var blueMove = UIImageView()


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        slider.value = 0.5
        blueMove.backgroundColor = .blue

        blueMove.isUserInteractionEnabled = true




     blueMove.backgroundColor = .blue


        [blueMove,slider].forEach {

            view.addSubview($0)
            $0.translatesAutoresizingMaskIntoConstraints = false

        }

        //image12
        image1Width2 =  blueMove.widthAnchor.constraint(equalTo:  view.widthAnchor ,multiplier:  0.25)
        image1Height2 =  blueMove.heightAnchor.constraint(equalTo:  view.heightAnchor ,multiplier:  0.20)



        let percent1 = self.view.frame.height * 0.1

        let percent2 = self.view.frame.width * 0.2


        NSLayoutConstraint.activate([


            blueMove.topAnchor.constraint(equalTo: view.topAnchor, constant : percent1),

            image1Width2,
            image1Height2,

            blueMove.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant :percent2)
        ])







        slider.addTarget(self, action: #selector(hhh), for: .allEvents)

    }

        override func viewDidLayoutSubviews() {
            NSLayoutConstraint.activate ([


      slider.bottomAnchor.constraint(equalTo: view.bottomAnchor),

                slider.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.20, constant: 0),
                slider.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.20, constant: 0),
                slider.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant : 0),


            ])
        }

    @objc func hhh() {



            image1Width2.constant = CGFloat(slider.value) * view.frame.size.width * 0.25
            image1Height2.constant = CGFloat(slider.value) * view.frame.size.height * 0.25





    }

}

viewDidLoad()中,您基于 slider 的值为0.0 ...定义“蓝色视图”的约束......但您给 slider 的初始值为0.5

因此,当您第一次触摸 slider 时,您的蓝色视图大小会“跳跃”到0.5调整后的大小。

viewDidLoad()的末尾添加对hhh()的调用:

    slider.addTarget(self, action: #selector(hhh), for: .allEvents)

    // change blue view based on initial slider value of 0.5
    hhh()

现在,当您将 slider 拖到左侧时,您会看到蓝色视图变小,当您将其拖到右侧时,蓝色视图变大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM