2017-12-29 32 views
0

안녕하세요, 당신은 baubles로 크리스마스 트리를 장식 할 수있는 앱을 만들고 있습니다.보기 주위로 드래그 할 수 있도록 코드를 썼지 만 싸구려가 부족합니다. 어떻게 만들어서 제비를 가질 수 있습니까? 크리스마스 나무에 넣어 싸구려의. 하나의 bauble를 여러 번 복제하려고했지만 코드에 모두 추가했는데 동시에 작동하지 않습니다. 당신이 그림에서 보면 그것에서 배우를 가지고 있지만 난 당신이 파단으로 장식의 변수 번호를 추가하는 경우 무한 콘센트

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var red_bauble_1: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let gesture = UIPanGestureRecognizer(target: self, action: #selector(ViewController.wasDragged(_ :))) 
     red_bauble_1.addGestureRecognizer(gesture) 
     red_bauble_1.isUserInteractionEnabled = true 
    } 

    @objc func wasDragged (_ gesture: UIPanGestureRecognizer) { 

     let translation = gesture.translation(in: self.view) 
     let red_bauble_1 = gesture.view 

     red_bauble_1?.center = CGPoint(x: red_bauble_1!.center.x + translation.x, y: (red_bauble_1?.center.y)! + translation.y) 
     gesture.setTranslation(CGPoint.zero, in: self.view) 

    } 

} 
+3

나는 당신이하려고하는 것을 이해하는 크리스마스 트리의 사진보다 더 볼 거 필요 해요 해야 할 것. – chrisz

+0

Ive가 코드 –

+0

을 추가했습니다. 왜이 태그가 파이썬과 태그 되었습니까? – roganjosh

답변

1

에 넣어 아직도 거기에있을 일이지만 하나를 끌어 싶어합니다 그들에 대한 참조를 유지하기 위해서, 그것들을위한 배열을 가지고 있어야합니다. 당신이 당신의 트리에 추가하고 당신이 그들 모두를 추적 할 수있는 배열을 가지고

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 
     } 
    } 

} 

그 수익률은 :

enter image description here

+0

롭이 말했다. 나는 똑같은 것을 제안하려고했으나 그는 그것에 나를 때렸다. –

+0

콘센트를 어떻게 연결합니까? –

+2

그렇지 않습니다. 콘센트를 사용하는 대신 어레이를 사용하여 이미지 뷰를 참조하십시오. –