滑块只增加图像视图的大小,而不是减少大小。

问题描述 投票:0回答:1

我下面的swift代码使用了一个滑块来增加imageeview的大小,我想做的是当滑块从小于0.5时,imageeview会变小。我想做的是,当滑块从小于0.5的地方移动时,imageeview会变小,如果滑块的值等于或大于0.5,imageeviw的大小就会增大。如果滑块的值等于或大于0.5,imageeviw的大小就会增大。现在,滑块的值设置为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





    }

}
swift slider constants nslayoutconstraint cgfloat
1个回答
0
投票

在这里,我想说的是,当滑块从小于0.5的位置移动时,imageeview会变小。viewDidLoad() 您是根据滑块的值为 "蓝色视图 "定义约束条件的。0.0 ......但你给你的滑块一个初始值为 0.5.

因此,当你第一次触摸滑块时,你的蓝色视图的大小会 "跳 "到一个 0.5 调整后的尺寸。

添加调用 hhh() 到了 viewDidLoad():

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

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

现在你会看到,当你向左拖动滑块时,蓝色视图会变小,而当你向右拖动它时,蓝色视图会变大。

© www.soinside.com 2019 - 2024. All rights reserved.