У меня есть UIView, который подключен к моему контроллеру представления как IBOutlet. Я назначил экземпляр класса AnimationView этому свойству в своем методе ViewDidLoad и установил для него ограничения с помощью animationView.snp.makeConstraints { (make) in make.width.equalTo(view).multipliedBy(0.5) }
Но когда я запускаю свой проект, я получаю это сообщение об ошибке, в котором говорится, что ограничение или его привязки ссылаются на элементы в разных иерархиях представлений? это незаконно
Я понятия не имею, почему я получаю это сообщение об ошибке. Кто-нибудь может объяснить, что я делаю неправильно?
Ниже приведено изображение моего проекта:
И исходный код в тексте:
import UIKit
import SnapKit
import Lottie
class ViewController: UIViewController {
@IBOutlet var myView: UIView!
override func viewDidLoad() {
myView = AnimationView()
myView.snp.makeConstraints { (make) in
make.width.equalTo(view).multipliedBy(0.5)
make.height.equalTo(view).multipliedBy(0.5)
}
}
}
Обновлять:
Как я исправил эту проблему, было выполнено следующие шаги:
- Создайте представление-заполнитель в раскадровке и добавьте его как IBOutlet к владельцу вашего файла (убедитесь, что вы ввели
AnimationView
в качестве его класса на крайней правой панели). - Программно создайте представление анимации и добавьте его к непосредственному суперпредставлению.
- Дайте этому анимационному представлению тот же кадр, что и замещающему виду
animationView.frame = placeholderView.frame
- Дайте ограничения, которые вы хотите, для представления заполнителя (
placeholderView.snp.makeConstraints { (make) in ... }
)
Теперь вы подключили свое представление, созданное программно, к представлению-заполнителю в раскадровке. Ваше программное представление изменит размер с размером представления-заполнителя.