В настоящее время у меня возникают проблемы при обновлении ограничений для UIVIew в Autolayout - PullRequest
0 голосов
/ 26 ноября 2018

Я создал собственный вид, в который добавлены подпредставления, и к каждому объекту UIView добавлен UIPanGestureRecognizer, но когда я выбираю UIView после обновления ограничений, возникает задержка.Если я перетаскиваю UIView (sView) за пределы экрана, в следующий раз, когда я перетаскиваю представление в любом направлении, перед регистрацией распознавателя жестов панорамирования будет задержка в несколько секунд.Он не регистрирует жест панорамирования немедленно.

Я прочитал об автоматической компоновке и считаю, что она правильно настроена в методе обратного вызова анимации.Я создал делегата в контроллере представления, который имеет доступ к обновленным ограничениям, а sView.leftConstraint и sView.rightConstraint - это поля, которые я добавил в настраиваемое представление, представляющее перетаскиваемый UIView.

ScrollViewController принимает протокол, чтобы он мог получить доступ к выбранному представлению и соответствующим образом обновить ограничения.

Любая помощь будет принята с благодарностью:)

extension ScrollViewController: DragDelegate {

func draggedLeft(sView: DraggableView) {
    print("Dragged Left")

    confirmationLabel.text = ""
    sView.selectionLabel.text = "Not Selected"
    sView.cornerRadius = 7

    sView.rightConstraint?.isActive = false
    sView.leftConstraint?.isActive = false
    sView.leftConstraint?.constant = 1
    sView.leftConstraint?.isActive = true
//        sView.widthConstraint?.constant = 300


    UIView.animate(withDuration: 0.3) {
        sView.updateConstraints()
        self.contentView.setNeedsLayout()
        self.view.layoutIfNeeded()
    }
}
}


class OrderSelectionView: UIView {

var dView : DraggableView?
var dView2 : DraggableView?
let screenWidth = UIScreen.main.bounds.width

//I need to set up all the constraints in this class
//This will act almost like a container view


override init(frame: CGRect) {
    super.init(frame: frame)

    self.backgroundColor = #colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)

    let margins = self.layoutMarginsGuide
    self.translatesAutoresizingMaskIntoConstraints = false

    dView = DraggableView(frame: frame)

    dView2 = DraggableView(frame: frame)
    guard let dragView = dView else {return}
    guard let dragView2 = dView2 else {return}

    dragView.translatesAutoresizingMaskIntoConstraints = false
    dragView.topAnchor.constraint(equalTo: laundryLabel.bottomAnchor, constant: 10).isActive = true

    let rightAnchor = NSLayoutConstraint(item: dragView, attribute: .right, relatedBy: .equal, toItem: self, attribute: .right, multiplier: 1, constant: 0)
    let leftAnchor = NSLayoutConstraint(item: dragView, attribute: .left, relatedBy: .equal, toItem: self, attribute: .left, multiplier: 1, constant: 0)

    dragView.widthAnchor.constraint(equalToConstant: 150).isActive = true
    dragView.heightAnchor.constraint(equalToConstant: 40).isActive = true
    dragView.leftConstraint = leftAnchor
    dragView.leftConstraint?.isActive = true
    dragView.rightConstraint = rightAnchor

    self.addSubview(dragView2)

    dragView2.translatesAutoresizingMaskIntoConstraints = false

    let laundryLabel2 = createLaundryLabel(lTitle: "Dry", constant: 100)

    dragView2.translatesAutoresizingMaskIntoConstraints = false
    dragView2.topAnchor.constraint(equalTo: laundryLabel2.bottomAnchor, constant: 10).isActive = true

    let rightAnchor2 = NSLayoutConstraint(item: dragView2, attribute: .right, relatedBy: .equal, toItem: self, attribute: .right, multiplier: 1, constant: -50)
    let leftAnchor2 = NSLayoutConstraint(item: dragView2, attribute: .left, relatedBy: .equal, toItem: self, attribute: .left, multiplier: 1, constant: 0)

    dragView2.widthAnchor.constraint(equalToConstant: 150).isActive = true
    dragView2.heightAnchor.constraint(equalToConstant: 40).isActive = true
    dragView2.leftConstraint = leftAnchor2
    dragView2.leftConstraint?.isActive = true
    dragView2.rightConstraint = rightAnchor2

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...