Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无限出口_Ios_Swift_Uipangesturerecognizer - Fatal编程技术网

Ios 无限出口

Ios 无限出口,ios,swift,uipangesturerecognizer,Ios,Swift,Uipangesturerecognizer,嗨,我正在制作一个应用程序,你可以用小玩意儿装饰圣诞树。我已经编写了代码,可以在视图中拖动它,但是我的小玩意儿用完了。我该如何制作,这样我就可以在圣诞树上放很多小玩意儿。我曾多次尝试复制一个小玩意儿,但后来将它们全部添加到代码中,但都不起作用,同时将它们全部拖走。如果你看这张照片,它里面有一些小玩意儿,但我希望它能一个一个地拖到那里去穿上 如果要添加数量可变的装饰作为子视图,并希望保留对它们的引用,只需为它们设置一个数组,例如 var ornaments = [UIView]() // or

嗨,我正在制作一个应用程序,你可以用小玩意儿装饰圣诞树。我已经编写了代码,可以在视图中拖动它,但是我的小玩意儿用完了。我该如何制作,这样我就可以在圣诞树上放很多小玩意儿。我曾多次尝试复制一个小玩意儿,但后来将它们全部添加到代码中,但都不起作用,同时将它们全部拖走。如果你看这张照片,它里面有一些小玩意儿,但我希望它能一个一个地拖到那里去穿上


如果要添加数量可变的装饰作为子视图,并希望保留对它们的引用,只需为它们设置一个数组,例如

var ornaments = [UIView]()  // or, if they're image views, `[UIImageView]()`
然后,当你把装饰物添加到你的树上时,你可以将它们添加到这个数组中,你有一个数组来跟踪它们


例如:

class ViewController: UIViewController {

    @IBOutlet weak var treeImageView: UIImageView!
    @IBOutlet weak var ornamentToolImageView: UIImageView!

    private var currentOrnament: UIView!

    private var ornaments = [UIView]()

    override func viewDidLoad() {
        super.viewDidLoad()

        let pan = UIPanGestureRecognizer(target: self, action: #selector(dragOrnamentFromToolbar(_:)))
        ornamentToolImageView.addGestureRecognizer(pan)
    }

    /// Gesture for dragging ornament from toolbar on to the tree
    ///
    /// This creates new ornament and adds it to view hierarchy as well as to our array of `ornaments`

    @IBAction func dragOrnamentFromToolbar(_ gesture: UIPanGestureRecognizer) {
        let location = gesture.location(in: treeImageView)

        switch gesture.state {
        case .began:
            gesture.view?.isHidden = true                 // temporarily hide toolbar view so it feels like we're dragging it
            let image = UIImage(named: "ornament")!
            currentOrnament = UIImageView(image: image)
            ornaments.append(currentOrnament)
            treeImageView.addSubview(currentOrnament)
            fallthrough

        case .changed:
            currentOrnament.center = location

        case .ended, .cancelled:
            // when done, add new pan gesture for dragging around new ornament

            gesture.view?.isHidden = false                // restore toolbar view
            currentOrnament.isUserInteractionEnabled = true
            let pan = UIPanGestureRecognizer(target: self, action: #selector(dragExistingOrnament(_:)))
            currentOrnament.addGestureRecognizer(pan)
            currentOrnament = nil

        default:
            break
        }
    }

    /// Gesture for dragging existing ornament
    ///
    /// This grabs existing and allows you to drag it around

    @IBAction func dragExistingOrnament(_ gesture: UIPanGestureRecognizer) {
        let location = gesture.location(in: treeImageView)

        switch gesture.state {
        case .began:
            currentOrnament = gesture.view
            fallthrough

        case .changed:
            currentOrnament.center = location

        default:
            break
        }
    }

}
这将产生:


我需要看的不仅仅是圣诞树的图片,才能理解你在做什么。我添加了代码为什么要用Python标记这个?因为我想不出还有什么可以放的,这是一个流行的标记,可以让更多的人看到它。如果有问题,我会删除它。你不能随意挑选标记,希望得到它更多的人看到它。。。!如果有什么区别的话,那将因为标签的无关性而吸引更多的反对票。我本打算提出同样的建议,但他抢先告诉了我。我如何将我的销售渠道与之联系起来?你没有。不要使用插座,而是使用阵列来引用图像视图。很抱歉,这有点让人困惑,那么我该怎么写呢?装饰品.添加手势识别器(手势)
class ViewController: UIViewController {

    @IBOutlet weak var treeImageView: UIImageView!
    @IBOutlet weak var ornamentToolImageView: UIImageView!

    private var currentOrnament: UIView!

    private var ornaments = [UIView]()

    override func viewDidLoad() {
        super.viewDidLoad()

        let pan = UIPanGestureRecognizer(target: self, action: #selector(dragOrnamentFromToolbar(_:)))
        ornamentToolImageView.addGestureRecognizer(pan)
    }

    /// Gesture for dragging ornament from toolbar on to the tree
    ///
    /// This creates new ornament and adds it to view hierarchy as well as to our array of `ornaments`

    @IBAction func dragOrnamentFromToolbar(_ gesture: UIPanGestureRecognizer) {
        let location = gesture.location(in: treeImageView)

        switch gesture.state {
        case .began:
            gesture.view?.isHidden = true                 // temporarily hide toolbar view so it feels like we're dragging it
            let image = UIImage(named: "ornament")!
            currentOrnament = UIImageView(image: image)
            ornaments.append(currentOrnament)
            treeImageView.addSubview(currentOrnament)
            fallthrough

        case .changed:
            currentOrnament.center = location

        case .ended, .cancelled:
            // when done, add new pan gesture for dragging around new ornament

            gesture.view?.isHidden = false                // restore toolbar view
            currentOrnament.isUserInteractionEnabled = true
            let pan = UIPanGestureRecognizer(target: self, action: #selector(dragExistingOrnament(_:)))
            currentOrnament.addGestureRecognizer(pan)
            currentOrnament = nil

        default:
            break
        }
    }

    /// Gesture for dragging existing ornament
    ///
    /// This grabs existing and allows you to drag it around

    @IBAction func dragExistingOrnament(_ gesture: UIPanGestureRecognizer) {
        let location = gesture.location(in: treeImageView)

        switch gesture.state {
        case .began:
            currentOrnament = gesture.view
            fallthrough

        case .changed:
            currentOrnament.center = location

        default:
            break
        }
    }

}