我下面的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
}
}
在这里,我想说的是,当滑块从小于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()
现在你会看到,当你向左拖动滑块时,蓝色视图会变小,而当你向右拖动它时,蓝色视图会变大。