узнайте расстояние от ведущего якоря объекта

#swift #button #distance #nslayoutconstraint

Вопрос:

Я хочу узнать расстояние между ведущим якорем и местом, где находится объект, от его ведущего якоря. Вы можете увидеть, что я пытаюсь сделать, в приведенном ниже gif. Идея 40-это 40 процентов слева, это всего лишь оценка. Но цель состоит в том, чтобы при нажатии кнопки было найдено расстояние от точки зрения, ведущей к объекту, до ведущего субъекта.

введите описание изображения здесь

 import UIKit

class ViewController: UIViewController {
    
    var distanceB = UIButton()
    
    var mover = UIPanGestureRecognizer()    
    var greenTransition: CGAffineTransform?
    var jake = true
    
    var pic = UIView()
    var g2 = UIPanGestureRecognizer()
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        [pic,distanceB].forEach{
            $0.translatesAutoresizingMaskIntoConstraints = false
            view.addSubview($0)
        }
        
      
        distanceB.addTarget(self, action: #selector(findD), for: .touchDown)
        distanceB.backgroundColor = .purple
        pic.backgroundColor = .red
        
        NSLayoutConstraint.activate([
            pic.topAnchor.constraint(equalTo: view.topAnchor),
            pic.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            pic.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.5),
            pic.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 0.5),
            
            
            distanceB.topAnchor.constraint(equalTo: view.topAnchor),
            distanceB.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            distanceB.heightAnchor.constraint(equalTo: view.heightAnchor,multiplier: 0.1),
            distanceB.widthAnchor.constraint(equalTo: view.widthAnchor,multiplier: 1),
            
            
        ])
        
        
        g2 = UIPanGestureRecognizer(target: self, action: #selector(ViewController.g1Method))
        pic.addGestureRecognizer(g2)
    }

       
    @objc func g1Method(_ sender: UIPanGestureRecognizer){
        

        if jake == true {
            guard let child = sender.view else{return}
            let transitionPoint = sender.translation(in: self.view)
            let newTransition = CGAffineTransform(translationX: transitionPoint.x, y: transitionPoint.y)
            
            
            
            switch sender.state {
                
            case .ended,.cancelled:// on End
                if let existing = greenTransition {
                    greenTransition = newTransition.concatenating(existing)
                } else {
                    greenTransition = newTransition
                }
                
            default://on change and other states
                if let existing = greenTransition {
                    child.transform = newTransition
                        .concatenating(existing)
                } else {
                    child.transform = newTransition
                }
                
            }
            self.view.layoutIfNeeded()
        }
        
        
        
        
        
        
        
    }
    
    @objc func findD(){
        //find distance
    }

}
 

Ответ №1:

Расстояние равно нулю. Ваш распознаватель жестов панорамирования просто применяет преобразование. Это вообще не меняет реального представления. Вид все еще там, где он начался.

Комментарии:

1. Я этого не знал. Что бы я сделал, чтобы заставить его двигаться, вам не нужно давать мне никакого кода. Мне просто нужно знать, в каком направлении двигаться.