将项目添加到Swift数组

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

我的快捷代码现在使用func addbox将append图像视图转换为空白array的图像视图。

[当用户点击button widthActivatorBtn时,它应允许用户在图像视图上进行选择并更改图像宽度。它仅在选择widthActivatorBtn并将selectNum更改为3时才有效。

我可以影响selectNum更改为3后放置的imageview,但不影响它之前的imageview。查看我的gif文件,您可以看到问题所在。当selectNum更改为3时,所有图像视图都应能够通过滑块更改其宽度。

enter image description here

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)

    }

}

我的快捷代码现在使用func addbox将imageviews附加到空的imageviews数组中。当用户点击按钮widthActivatorBtn时,它应允许用户在图像视图上进行选择并更改...

arrays swift if-statement uiview uipangesturerecognizer
1个回答
0
投票

删除selectNum变量,这是导致问题的原因。当您在那时创建第一张图像时selectNum不等于3,因此不会将手势添加到第一张imageView中,而是在width button上倾斜后selectNum设置为值3,之后您创建任何imageview,然后imageView得到手势,宽度逻辑就起作用了。

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