我现在的快速代码使用func addbox将append
imageviews更改为空白array
的imageviews。
当用户点击button
widthActivatorBtn时,它应允许用户在imageview上进行选择并更改imageveiew的宽度。它仅在选择widthActivatorBtn并将selectNum更改为3时才有效。
我可以影响将selectNum更改为3之后放置的imageview,但不影响它之前的imageviews。查看我的gif文件,您可以看到问题所在。当selectNum更改为3时,所有图像视图均应能够通过滑块更改其宽度。
import UIKit
class ViewController: UIViewController {
var slider = UISlider()
var ht = -90
var widthSize = 80
var emptyArray = [UIImageView]()
var addImageview = UIButton()
var width = UIButton()
var currentView: UIView?
var selectNum = Int()
override func viewDidLoad() {
super.viewDidLoad()
[addImageview,slider,width].forEach {
$0.translatesAutoresizingMaskIntoConstraints = false
view.addSubview($0)
$0.backgroundColor = .systemOrange
}
addImageview.setTitle("add imageview", for: .normal)
width.setTitle("change width", for: .normal)
addImageview.frame = CGRect(x: view.center.x-115, y: view.center.y + 200, width: 160, height: 40)
slider.frame = CGRect(x: view.center.x-115, y: view.center.y-200, width: 160, height: 40)
width.frame = CGRect(x: view.center.x-115, y: view.center.y + 100, width: 160, height: 40)
addImageview.addTarget(self, action: #selector(addBOx), for: .touchUpInside)
width.addTarget(self, action: #selector(widthActivatorBtn), for: .touchUpInside)
slider.addTarget(self, action: #selector(ji), for: .valueChanged)
slider.minimumValue = 10
slider.maximumValue = 150
}
@objc func widthActivatorBtn() {
width.backgroundColor = .systemPink
selectNum = 3
}
@objc func addBOx() {
let subview = UIImageView()
subview.isUserInteractionEnabled = true
emptyArray.append(subview)
view.addSubview(subview)
subview.frame = CGRect(x: view.bounds.midX - 0, y: view.bounds.midY + CGFloat(ht), width: CGFloat(widthSize), height: 35)
subview.backgroundColor = .purple
ht += 50
emptyArray.append(subview)
if selectNum == 3{
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTapGestured(_:)))
subview.addGestureRecognizer(tapGesture)
}
}
@objc func handleTapGestured(_ gesture: UIPanGestureRecognizer) {
currentView = gesture.view
}
@objc func ji(sender : UISlider){
widthSize = Int(slider.value)
currentView?.bounds.size.width = CGFloat(slider.value)
}
}
删除selectNum
变量,这是导致问题的原因。当您当时创建的第一个图像selectNum
不等于3时,该手势不会添加到第一个imageView中,而是在width button
selectNum
将其设置为值3之后,当您创建任何imageview时,该imageView都会获得该手势宽度逻辑就可以了
@objc func addBOx() {
let subview = UIImageView()
subview.isUserInteractionEnabled = true
emptyArray.append(subview)
view.addSubview(subview)
subview.frame = CGRect(x: view.bounds.midX - 0, y: view.bounds.midY + CGFloat(ht), width: CGFloat(widthSize), height: 35)
subview.backgroundColor = .purple
ht += 50
emptyArray.append(subview)
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTapGestured(_:)))
subview.addGestureRecognizer(tapGesture)
}
@objc func widthActivatorBtn() {
width.backgroundColor = .systemPink
selectNum = 3
}
@objc func ji(sender : UISlider){
if selectNum == 3 {
widthSize = Int(slider.value)
currentView?.bounds.size.width = CGFloat(slider.value)
}
}
selectNum == 3
在ji
func中添加条件,以调整大小。您可以在selectNum
某处重置以停止调整大小。所以现在当widthActivatorBtn
按下时,只有宽度会改变。希望这对您有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句