Невозможно активировать ограничения - PullRequest
0 голосов
/ 21 марта 2019

Я получаю сообщение об ошибке ..

Завершение работы приложения из-за необработанного исключения «NSGenericException», причина: «Невозможно активировать ограничение с помощью якорей, потому что у них нет общего предка. Есть ли ограничение или его якоря ссылочные позиции в разных иерархиях представлений? Это незаконно. '

Я ссылался на другие ответы, и последовательно решалось добавить подпредставление в viewDidLoad до программной активации ограничений.

Я все еще получаю тот же сбой и не понимаю, что его вызывает. Любое руководство будет оценено. Ниже приведен соответствующий код:

@IBOutlet weak var activityIndicatorView: UIView!
@IBOutlet weak var refreshActivityIndicatorView: UIView!

let activityIndicator = AnimationView(name: "name")
let refreshActivityIndicator = AnimationView(name: "name")

override func viewDidLoad() {
    super.viewDidLoad()
    activityIndicatorView.addSubview(activityIndicator)
    activityIndicator.translatesAutoresizingMaskIntoConstraints = false
    refreshActivityIndicatorView.addSubview(activityIndicator)
    refreshActivityIndicator.translatesAutoresizingMaskIntoConstraints = false

    NSLayoutConstraint.activate([
        activityIndicator.centerXAnchor.constraint(equalTo: activityIndicatorView.centerXAnchor),
        activityIndicator.centerYAnchor.constraint(equalTo: activityIndicatorView.centerYAnchor),
        activityIndicator.widthAnchor.constraint(equalToConstant: activityIndicatorView.frame.width),
        activityIndicator.heightAnchor.constraint(equalToConstant: activityIndicatorView.frame.height),
        refreshActivityIndicator.centerXAnchor.constraint(equalTo: refreshActivityIndicatorView.centerXAnchor),
        refreshActivityIndicator.centerYAnchor.constraint(equalTo: refreshActivityIndicatorView.centerYAnchor),

    refreshActivityIndicator.widthAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.width),

    refreshActivityIndicator.heightAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.height)
    ])
}

1 Ответ

0 голосов
/ 21 марта 2019

Заменить

refreshActivityIndicatorView.addSubview(activityIndicator)

с

refreshActivityIndicatorView.addSubview(refreshActivityIndicator)

как те, почему крушение

refreshActivityIndicator.centerXAnchor.constraint(equalTo: refreshActivityIndicatorView.centerXAnchor),
refreshActivityIndicator.centerYAnchor.constraint(equalTo: refreshActivityIndicatorView.centerYAnchor), 
refreshActivityIndicator.widthAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.width), 
refreshActivityIndicator.heightAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.height)

Вы устанавливаете ограничения между refreshActivityIndicatorView и refreshActivityIndicator, в то время как refreshActivityIndicator не добавляется как подпредставление

...